{
  "contractName": "Verifier",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "s",
          "type": "string"
        }
      ],
      "name": "Verified",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "a",
          "type": "uint256[2]"
        },
        {
          "name": "a_p",
          "type": "uint256[2]"
        },
        {
          "name": "b",
          "type": "uint256[2][2]"
        },
        {
          "name": "b_p",
          "type": "uint256[2]"
        },
        {
          "name": "c",
          "type": "uint256[2]"
        },
        {
          "name": "c_p",
          "type": "uint256[2]"
        },
        {
          "name": "h",
          "type": "uint256[2]"
        },
        {
          "name": "k",
          "type": "uint256[2]"
        },
        {
          "name": "input",
          "type": "uint256[3]"
        }
      ],
      "name": "verifyTx",
      "outputs": [
        {
          "name": "r",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506113f4806100206000396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663c834d03d8114610045575b600080fd5b34801561005157600080fd5b506040805180820182526101d69136916004916044919083906002908390839080828437505060408051808201825294979695818101959450925060029150839083908082843750506040805180820190915293969594608081019493509150600290506000835b828210156100f25760408051808201825290808402860190600290839083908082843750505091835250506001909101906020016100b9565b5050604080518082018252939695948181019493509150600290839083908082843750506040805180820182529497969581810195945092506002915083908390808284375050604080518082018252949796958181019594509250600291508390839080828437505060408051808201825294979695818101959450925060029150839083908082843750506040805180820182529497969581810195945092506002915083908390808284375050604080516060818101909252949796958181019594509250600391508390839080828437509396506101ea95505050505050565b604080519115158252519081900360200190f35b60006101f4611233565b6040805180820182528c5181526020808e015181830152908352815180830183528c5181528c82015181830152838201528151608080820184528c51518285019081528d51840151606080850191909152908352845180860186528e8501805151825251850151818601528385015285850192909252835180850185528c5181528c8401518185015282860152835180850185528b5181528b8401518185015281860152835180850185528a5181528a8401518185015260a08601528351808501855289518152898401518185015260e08601528351808501855288518152888401518185015260c086015283516003808252918101909452909260009290919082018480388339019050509150600090505b60038110156103415784816003811061031c57fe5b6020020151828281518110151561032f57fe5b60209081029091010152600101610307565b61034b82846103f5565b15156103e0576040805160208082526022908201527f5472616e73616374696f6e207375636365737366756c6c792076657269666965818301527f642e000000000000000000000000000000000000000000000000000000000000606082015290517f3f3cfdb26fb5f9f1786ab4f1a1f9cd4c0b5e726cbdfc26e495261731aad44e399181900360800190a1600193506103e5565b600093505b5050509998505050505050505050565b60006103ff6112a8565b610407611318565b6000610411610600565b92508260e0015151865160010114151561042a57600080fd5b5050604080518082019091526000808252602082018190525b855181101561049e576104948261048f8560e001518460010181518110151561046857fe5b90602001906020020151898581518110151561048057fe5b90602001906020020151610c28565b610c83565b9150600101610443565b6104c4828460e0015160008151811015156104b557fe5b90602001906020020151610c83565b8551845160208801519294506104ea926104dd90610cd2565b6104e5610d5f565b610e1f565b15156104f957600193506105f7565b610513836020015186604001516104dd8860600151610cd2565b151561052257600293506105f7565b61053c856080015184604001516104dd8860a00151610cd2565b151561054b57600393506105f7565b6105928560c0015184606001516105766105718661048f8b600001518c60800151610c83565b610cd2565b8660a001516105888860800151610cd2565b8a60400151610f0a565b15156105a157600493506105f7565b6105e36105b2838760000151610c83565b86604001516105c48860e00151610cd2565b8660c001516105d68a60800151610cd2565b6105de610d5f565b610f0a565b15156105f257600593506105f7565b600093505b50505092915050565b6106086112a8565b60408051608080820183527f1673cae24de1283311f605ed84de0bc14d79582603244567c5883e2d67640ca28284019081527f23052b7ebb61fa8703eea7a35bf8987085e174326dc81988d976b771305b4ade606080850191909152908352835180850185527f2741ddbbf959d845a94903f999d5d169fc848469009480a76b70dd9cc165ec1c81527e1087ab46373e0cd0752fbc1ff8331eef6f73886acf9af08aac2b0ffbfe000a60208281019190915280850191909152928552835180850185527f2b67b6be5172d0300f5c128bc1a433f9e20ff5da683ebef26a36db1fff1e7e4981527f29691c34ebf1cc702e5dec025703e47f0f510ca165f6873ebdb0cef8a0b7258e8185015285840152835180830185527f07076f976446398e6245dc3b27be761c279823676d82ed86a7534af581242e6e8186019081527f04c3e83973b728004c8cb71d5e5e5ef395cd94a0e565298fb58f9ea12d6a77da828401528152845180860186527f06a3e2dd7d88fae7c05be81d8a18e09411c5202f33cb9719b6ef76b99f6db30281527f20f2ac0a041ab43be495089cedfc07972920dc9f92208537013ea1ecc619cdbb818601528185015285850152835180830185527f038a86ed996c6ecf08eaf194ad8b7d830231357ccfa15343c20c2a42c63b51ed8186019081527f18e406efd472e861f376e68cadae862be1442a16d324b0d12352f4aa32f5d681828401528152845180860186527f0f765f0e7855fccbcb8d7839ceba3147042aaaab0b02d82d03f0017691ac503481527f2c3e947db54326db708f2d56ce555bfe4182a9f4cda405418d2ad22bc889d198818601528185015285820152835180850185527f2913abe31e0406b26de1d4d3f1a4c3154614c711228fd0b745af3345b78292df81527f169d525555b8866c73e46ff13b42672d454b0a0191bcb3dc7ec62997a38fb2d58185015285830152835180830185527f0aeac8cc1f2923956fbd89fc4dba7564e118dea4e8332cf03c5913dbbb293a308186019081527f0816f683dd187dbf60360153d8ba50b9d034645b98d6a7d6a23542e3851b7a07828401528152845180860186527f2ccdf662ba24097940f670ee88e6bc05ab54b7fbc18293dc6e235d871f07ebf081527f2b191f8c6c0d14ebcbc1e54c7d1ce3b5c0b20cce199605a8fbebd6e2d6556cde818601528185015260a080870191909152845192830185527f17bdc1c2529dc8b068f0dd39d953a90740b05fcb219158b35c0f1e8b63f8f9728386019081527f045a46ad508e4d57f7d3c30fe0eb91b45c72b1b7b1e429473ec7e3295cba1b8492840192909252908252835180850185527f1e6f9476986e26bac5a32c791d31887f64c72ce0bc97e8e934afb4265600a0c781527f0a7a96168c9994e2609c064979f993bf4057118768d59151468fc26369d01d13818501529282019290925260c084015281516004808252918101909252816020015b610a41611318565b815260200190600190039081610a3957505060e08201908152604080518082019091527f045f2548a80f71fc8f3c8799d1b61c6f2879dfe71fc67db1f7a50ca131350b8381527f222bb162f67070986663ea52c155f233b1006873f70d77f3f39cfcc65049b74f6020820152905180516000908110610abc57fe5b9060200190602002018190525060408051908101604052807f184569dcbfe2afc5804119c95f21b7b52ddd8af99494345f1387a18c6e7ee23581526020017f15b75613ca711d5c694e7d5bffd65e4b30dbf98e2ee6da38a1f2a590a65aaa678152508160e001516001815181101515610b3157fe5b9060200190602002018190525060408051908101604052807f1a05082ca71ca4370ec7e112f36fdecef2eb15e73ba9a8258640f50e747b539a81526020017f287e64eb98729cbc14f029e2643a77bc75fbd989d6929a6fc2a4a2b0480893e88152508160e001516002815181101515610ba657fe5b9060200190602002018190525060408051908101604052807f1da3e1dca401bd69203ba224c0403cfa7590e360c816d3eb1615185aeb69cee381526020017f19383ec2e9e8d4b61d804911971e85f47e71489b883164b7319a3eb18fc71c188152508160e001516003815181101515610c1b57fe5b6020908102909101015290565b610c30611318565b610c3861132f565b83518152602080850151908201526040810183905260006060836080848460076107d05a03f19050808015610c6c57610c6e565bfe5b50801515610c7b57600080fd5b505092915050565b610c8b611318565b610c9361134e565b8351815260208085015181830152835160408301528301516060808301919091526000908360c0848460066107d05a03f19050808015610c6c57610c6e565b610cda611318565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790158015610d0d57506020830151155b15610d2d5760408051808201909152600080825260208201529150610d59565b604080519081016040528084600001518152602001828560200151811515610d5157fe5b068303905291505b50919050565b610d6761136d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b82527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60208381019190915281019190915290565b6040805160028082526060828101909352600092918291816020015b610e43611318565b815260200190600190039081610e3b57505060408051600280825260608201909252919350602082015b610e7561136d565b815260200190600190039081610e6d57905050905086826000815181101515610e9a57fe5b602090810290910101528151859083906001908110610eb557fe5b602090810290910101528051869082906000908110610ed057fe5b602090810290910101528051849082906001908110610eeb57fe5b60209081029091010152610eff828261102e565b979650505050505050565b604080516003808252608082019092526000916060918291816020015b610f2f611318565b815260200190600190039081610f2757505060408051600380825260808201909252919350602082015b610f6161136d565b815260200190600190039081610f5957905050905088826000815181101515610f8657fe5b602090810290910101528151879083906001908110610fa157fe5b602090810290910101528151859083906002908110610fbc57fe5b602090810290910101528051889082906000908110610fd757fe5b602090810290910101528051869082906001908110610ff257fe5b60209081029091010152805184908290600290811061100d57fe5b60209081029091010152611021828261102e565b9998505050505050505050565b60008060006060600061103f61138e565b865188516000911461105057600080fd5b8851955085600602945084604051908082528060200260200182016040528015611084578160200160208202803883390190505b509350600092505b858310156111f95788838151811015156110a257fe5b602090810290910101515184518590600686029081106110be57fe5b6020908102909101015288518990849081106110d657fe5b906020019060200201516020015184846006026001018151811015156110f857fe5b60209081029091010152875188908490811061111057fe5b60209081029190910101515151845185906002600687020190811061113157fe5b60209081029091010152875188908490811061114957fe5b602090810291909101810151510151845185906003600687020190811061116c57fe5b60209081029091010152875188908490811061118457fe5b60209081029190910181015101515184518590600460068702019081106111a757fe5b6020908102909101015287518890849081106111bf57fe5b602090810291909101810151810151015184518590600560068702019081106111e457fe5b6020908102909101015260019092019161108c565b6020826020870260208701600060086107d05a03f19050808015610c6c575080151561122457600080fd5b50511515979650505050505050565b61024060405190810160405280611248611318565b8152602001611255611318565b815260200161126261136d565b815260200161126f611318565b815260200161127c611318565b8152602001611289611318565b8152602001611296611318565b81526020016112a3611318565b905290565b610320604051908101604052806112bd61136d565b81526020016112ca611318565b81526020016112d761136d565b81526020016112e461136d565b81526020016112f1611318565b81526020016112fe61136d565b815260200161130b61136d565b8152602001606081525090565b604080518082019091526000808252602082015290565b6060604051908101604052806003906020820280388339509192915050565b6080604051908101604052806004906020820280388339509192915050565b6080604051908101604052806113816113ad565b81526020016112a36113ad565b6020604051908101604052806001906020820280388339509192915050565b604080518082018252906002908290803883395091929150505600a165627a7a723058201a1672752010c7e267233363a48b5494364636cc69885a0ff18d0ef4ac885c5a0029",
  "deployedBytecode": "0x6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663c834d03d8114610045575b600080fd5b34801561005157600080fd5b506040805180820182526101d69136916004916044919083906002908390839080828437505060408051808201825294979695818101959450925060029150839083908082843750506040805180820190915293969594608081019493509150600290506000835b828210156100f25760408051808201825290808402860190600290839083908082843750505091835250506001909101906020016100b9565b5050604080518082018252939695948181019493509150600290839083908082843750506040805180820182529497969581810195945092506002915083908390808284375050604080518082018252949796958181019594509250600291508390839080828437505060408051808201825294979695818101959450925060029150839083908082843750506040805180820182529497969581810195945092506002915083908390808284375050604080516060818101909252949796958181019594509250600391508390839080828437509396506101ea95505050505050565b604080519115158252519081900360200190f35b60006101f4611233565b6040805180820182528c5181526020808e015181830152908352815180830183528c5181528c82015181830152838201528151608080820184528c51518285019081528d51840151606080850191909152908352845180860186528e8501805151825251850151818601528385015285850192909252835180850185528c5181528c8401518185015282860152835180850185528b5181528b8401518185015281860152835180850185528a5181528a8401518185015260a08601528351808501855289518152898401518185015260e08601528351808501855288518152888401518185015260c086015283516003808252918101909452909260009290919082018480388339019050509150600090505b60038110156103415784816003811061031c57fe5b6020020151828281518110151561032f57fe5b60209081029091010152600101610307565b61034b82846103f5565b15156103e0576040805160208082526022908201527f5472616e73616374696f6e207375636365737366756c6c792076657269666965818301527f642e000000000000000000000000000000000000000000000000000000000000606082015290517f3f3cfdb26fb5f9f1786ab4f1a1f9cd4c0b5e726cbdfc26e495261731aad44e399181900360800190a1600193506103e5565b600093505b5050509998505050505050505050565b60006103ff6112a8565b610407611318565b6000610411610600565b92508260e0015151865160010114151561042a57600080fd5b5050604080518082019091526000808252602082018190525b855181101561049e576104948261048f8560e001518460010181518110151561046857fe5b90602001906020020151898581518110151561048057fe5b90602001906020020151610c28565b610c83565b9150600101610443565b6104c4828460e0015160008151811015156104b557fe5b90602001906020020151610c83565b8551845160208801519294506104ea926104dd90610cd2565b6104e5610d5f565b610e1f565b15156104f957600193506105f7565b610513836020015186604001516104dd8860600151610cd2565b151561052257600293506105f7565b61053c856080015184604001516104dd8860a00151610cd2565b151561054b57600393506105f7565b6105928560c0015184606001516105766105718661048f8b600001518c60800151610c83565b610cd2565b8660a001516105888860800151610cd2565b8a60400151610f0a565b15156105a157600493506105f7565b6105e36105b2838760000151610c83565b86604001516105c48860e00151610cd2565b8660c001516105d68a60800151610cd2565b6105de610d5f565b610f0a565b15156105f257600593506105f7565b600093505b50505092915050565b6106086112a8565b60408051608080820183527f1673cae24de1283311f605ed84de0bc14d79582603244567c5883e2d67640ca28284019081527f23052b7ebb61fa8703eea7a35bf8987085e174326dc81988d976b771305b4ade606080850191909152908352835180850185527f2741ddbbf959d845a94903f999d5d169fc848469009480a76b70dd9cc165ec1c81527e1087ab46373e0cd0752fbc1ff8331eef6f73886acf9af08aac2b0ffbfe000a60208281019190915280850191909152928552835180850185527f2b67b6be5172d0300f5c128bc1a433f9e20ff5da683ebef26a36db1fff1e7e4981527f29691c34ebf1cc702e5dec025703e47f0f510ca165f6873ebdb0cef8a0b7258e8185015285840152835180830185527f07076f976446398e6245dc3b27be761c279823676d82ed86a7534af581242e6e8186019081527f04c3e83973b728004c8cb71d5e5e5ef395cd94a0e565298fb58f9ea12d6a77da828401528152845180860186527f06a3e2dd7d88fae7c05be81d8a18e09411c5202f33cb9719b6ef76b99f6db30281527f20f2ac0a041ab43be495089cedfc07972920dc9f92208537013ea1ecc619cdbb818601528185015285850152835180830185527f038a86ed996c6ecf08eaf194ad8b7d830231357ccfa15343c20c2a42c63b51ed8186019081527f18e406efd472e861f376e68cadae862be1442a16d324b0d12352f4aa32f5d681828401528152845180860186527f0f765f0e7855fccbcb8d7839ceba3147042aaaab0b02d82d03f0017691ac503481527f2c3e947db54326db708f2d56ce555bfe4182a9f4cda405418d2ad22bc889d198818601528185015285820152835180850185527f2913abe31e0406b26de1d4d3f1a4c3154614c711228fd0b745af3345b78292df81527f169d525555b8866c73e46ff13b42672d454b0a0191bcb3dc7ec62997a38fb2d58185015285830152835180830185527f0aeac8cc1f2923956fbd89fc4dba7564e118dea4e8332cf03c5913dbbb293a308186019081527f0816f683dd187dbf60360153d8ba50b9d034645b98d6a7d6a23542e3851b7a07828401528152845180860186527f2ccdf662ba24097940f670ee88e6bc05ab54b7fbc18293dc6e235d871f07ebf081527f2b191f8c6c0d14ebcbc1e54c7d1ce3b5c0b20cce199605a8fbebd6e2d6556cde818601528185015260a080870191909152845192830185527f17bdc1c2529dc8b068f0dd39d953a90740b05fcb219158b35c0f1e8b63f8f9728386019081527f045a46ad508e4d57f7d3c30fe0eb91b45c72b1b7b1e429473ec7e3295cba1b8492840192909252908252835180850185527f1e6f9476986e26bac5a32c791d31887f64c72ce0bc97e8e934afb4265600a0c781527f0a7a96168c9994e2609c064979f993bf4057118768d59151468fc26369d01d13818501529282019290925260c084015281516004808252918101909252816020015b610a41611318565b815260200190600190039081610a3957505060e08201908152604080518082019091527f045f2548a80f71fc8f3c8799d1b61c6f2879dfe71fc67db1f7a50ca131350b8381527f222bb162f67070986663ea52c155f233b1006873f70d77f3f39cfcc65049b74f6020820152905180516000908110610abc57fe5b9060200190602002018190525060408051908101604052807f184569dcbfe2afc5804119c95f21b7b52ddd8af99494345f1387a18c6e7ee23581526020017f15b75613ca711d5c694e7d5bffd65e4b30dbf98e2ee6da38a1f2a590a65aaa678152508160e001516001815181101515610b3157fe5b9060200190602002018190525060408051908101604052807f1a05082ca71ca4370ec7e112f36fdecef2eb15e73ba9a8258640f50e747b539a81526020017f287e64eb98729cbc14f029e2643a77bc75fbd989d6929a6fc2a4a2b0480893e88152508160e001516002815181101515610ba657fe5b9060200190602002018190525060408051908101604052807f1da3e1dca401bd69203ba224c0403cfa7590e360c816d3eb1615185aeb69cee381526020017f19383ec2e9e8d4b61d804911971e85f47e71489b883164b7319a3eb18fc71c188152508160e001516003815181101515610c1b57fe5b6020908102909101015290565b610c30611318565b610c3861132f565b83518152602080850151908201526040810183905260006060836080848460076107d05a03f19050808015610c6c57610c6e565bfe5b50801515610c7b57600080fd5b505092915050565b610c8b611318565b610c9361134e565b8351815260208085015181830152835160408301528301516060808301919091526000908360c0848460066107d05a03f19050808015610c6c57610c6e565b610cda611318565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4790158015610d0d57506020830151155b15610d2d5760408051808201909152600080825260208201529150610d59565b604080519081016040528084600001518152602001828560200151811515610d5157fe5b068303905291505b50919050565b610d6761136d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b82527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60208381019190915281019190915290565b6040805160028082526060828101909352600092918291816020015b610e43611318565b815260200190600190039081610e3b57505060408051600280825260608201909252919350602082015b610e7561136d565b815260200190600190039081610e6d57905050905086826000815181101515610e9a57fe5b602090810290910101528151859083906001908110610eb557fe5b602090810290910101528051869082906000908110610ed057fe5b602090810290910101528051849082906001908110610eeb57fe5b60209081029091010152610eff828261102e565b979650505050505050565b604080516003808252608082019092526000916060918291816020015b610f2f611318565b815260200190600190039081610f2757505060408051600380825260808201909252919350602082015b610f6161136d565b815260200190600190039081610f5957905050905088826000815181101515610f8657fe5b602090810290910101528151879083906001908110610fa157fe5b602090810290910101528151859083906002908110610fbc57fe5b602090810290910101528051889082906000908110610fd757fe5b602090810290910101528051869082906001908110610ff257fe5b60209081029091010152805184908290600290811061100d57fe5b60209081029091010152611021828261102e565b9998505050505050505050565b60008060006060600061103f61138e565b865188516000911461105057600080fd5b8851955085600602945084604051908082528060200260200182016040528015611084578160200160208202803883390190505b509350600092505b858310156111f95788838151811015156110a257fe5b602090810290910101515184518590600686029081106110be57fe5b6020908102909101015288518990849081106110d657fe5b906020019060200201516020015184846006026001018151811015156110f857fe5b60209081029091010152875188908490811061111057fe5b60209081029190910101515151845185906002600687020190811061113157fe5b60209081029091010152875188908490811061114957fe5b602090810291909101810151510151845185906003600687020190811061116c57fe5b60209081029091010152875188908490811061118457fe5b60209081029190910181015101515184518590600460068702019081106111a757fe5b6020908102909101015287518890849081106111bf57fe5b602090810291909101810151810151015184518590600560068702019081106111e457fe5b6020908102909101015260019092019161108c565b6020826020870260208701600060086107d05a03f19050808015610c6c575080151561122457600080fd5b50511515979650505050505050565b61024060405190810160405280611248611318565b8152602001611255611318565b815260200161126261136d565b815260200161126f611318565b815260200161127c611318565b8152602001611289611318565b8152602001611296611318565b81526020016112a3611318565b905290565b610320604051908101604052806112bd61136d565b81526020016112ca611318565b81526020016112d761136d565b81526020016112e461136d565b81526020016112f1611318565b81526020016112fe61136d565b815260200161130b61136d565b8152602001606081525090565b604080518082019091526000808252602082015290565b6060604051908101604052806003906020820280388339509192915050565b6080604051908101604052806004906020820280388339509192915050565b6080604051908101604052806113816113ad565b81526020016112a36113ad565b6020604051908101604052806001906020820280388339509192915050565b604080518082018252906002908290803883395091929150505600a165627a7a723058201a1672752010c7e267233363a48b5494364636cc69885a0ff18d0ef4ac885c5a0029",
  "sourceMap": "19445:5619:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19445:5619:0;;;;;;;",
  "deployedSourceMap": "19445:5619:0:-;;;;;;;;;;;;;;;;;;;;;;;23984:1078;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23984:1078:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23984:1078:0;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;;;;;;;-1:-1:-1;;23984:1078:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23984:1078:0;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;;;;;;;-1:-1:-1;23984:1078:0;;-1:-1:-1;23984:1078:0;;-1:-1:-1;;;;;;23984:1078:0;;;;;;;;;;;;;;;;;;;;24248:6;24266:18;;:::i;:::-;24304:27;;;;;;;;24320:4;;24304:27;;24320:4;24326;;;;24304:27;;;;24294:37;;;24353:31;;;;;;;24369:6;;24353:31;;24377:6;;;;24353:31;;;;24341:9;;;:43;24404:55;;;;;;;;24421:4;;:7;24404:55;;;;;;24430:4;;:7;;;24716:25;24404:55;;;;;;;;;;;;;;;;;24441:4;;;;;:7;24404:55;;24450:4;:7;;;24404:55;;;;-1:-1:-1;;;24404:55:0;24394:7;;;:65;;;;24481:31;;;;;;;24497:6;;24481:31;;24505:6;;;;24481:31;;;;24469:9;;;:43;24532:27;;;;;;;24548:4;;24532:27;;24554:4;;;;24532:27;;;;24522:7;;;:37;24581:31;;;;;;;24597:6;;24581:31;;24605:6;;;;24581:31;;;;24569:9;;;:43;24632:27;;;;;;;24648:4;;24632:27;;24654:4;;;;24632:27;;;;24622:7;;;:37;24679:27;;;;;;;24695:4;;24679:27;;24701:4;;;;24679:27;;;;24669:7;;;:37;24744:24;;24755:12;24744:24;;;;;;;;;24716:25;;-1:-1:-1;;24744:24:0;;24755:12;24744:24;;24716:25;;105:10:-1;24744:24:0;88:34:-1;136:17;;-1:-1;24744:24:0;24716:52;;24791:1;24782:10;;24778:88;24798:12;24794:1;:16;24778:88;;;24847:5;24853:1;24847:8;;;;;;;;;;;24830:11;24842:1;24830:14;;;;;;;;;;;;;;;;;;:25;24812:3;;24778:88;;;24879:26;24886:11;24899:5;24879:6;:26::i;:::-;:31;24875:181;;;24931:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24998:4;24991:11;;;;24875:181;25040:5;25033:12;;24875:181;23984:1078;;;;;;;;;;;;;;:::o;22706:1243::-;22767:4;22783:22;;:::i;:::-;22930:27;;:::i;:::-;22996:6;22808:14;:12;:14::i;:::-;22783:39;;22860:2;:5;;;:12;22840:5;:12;22855:1;22840:16;:32;22832:41;;;;;;;;-1:-1:-1;;22960:21:0;;;;;;;;;-1:-1:-1;22960:21:0;;;;;;;;;22991:125;23012:5;:12;23008:1;:16;22991:125;;;23050:66;23067:4;23073:42;23092:2;:5;;;23098:1;23102;23098:5;23092:12;;;;;;;;;;;;;;;;;;23106:5;23112:1;23106:8;;;;;;;;;;;;;;;;;;23073:18;:42::i;:::-;23050:16;:66::i;:::-;23043:73;-1:-1:-1;23026:3:0;;22991:125;;;23133:32;23150:4;23156:2;:5;;;23162:1;23156:8;;;;;;;;;;;;;;;;;;23133:16;:32::i;:::-;23201:7;;23210:4;;23231:9;;;;23126:39;;-1:-1:-1;23180:76:0;;23216:25;;:14;:25::i;:::-;23243:12;:10;:12::i;:::-;23180:20;:76::i;:::-;23179:77;23175:91;;;23265:1;23258:8;;;;23175:91;23281:76;23302:2;:4;;;23308:5;:7;;;23317:25;23332:5;:9;;;23317:14;:25::i;23281:76::-;23280:77;23276:91;;;23366:1;23359:8;;;;23276:91;23382:76;23403:5;:7;;;23412:2;:4;;;23418:25;23433:5;:9;;;23418:14;:25::i;23382:76::-;23381:77;23377:91;;;23467:1;23460:8;;;;23377:91;23483:216;23517:5;:7;;;23526:2;:8;;;23548:74;23563:58;23580:4;23586:34;23603:5;:7;;;23612:5;:7;;;23586:16;:34::i;23563:58::-;23548:14;:74::i;:::-;23624:2;:13;;;23651:29;23666:2;:13;;;23651:14;:29::i;:::-;23682:5;:7;;;23483:20;:216::i;:::-;23482:217;23478:231;;;23708:1;23701:8;;;;23478:231;23724:190;23762:31;23779:4;23785:5;:7;;;23762:16;:31::i;:::-;23795:5;:7;;;23820:23;23835:5;:7;;;23820:14;:23::i;:::-;23845:2;:4;;;23867:23;23882:5;:7;;;23867:14;:23::i;:::-;23892:12;:10;:12::i;:::-;23724:20;:190::i;:::-;23723:191;23719:205;;;23923:1;23916:8;;;;23719:205;23941:1;23934:8;;22706:1243;;;;;;;;:::o;20014:2687::-;20061:15;;:::i;:::-;20095:289;;;;;;;;;20112:66;20095:289;;;;;;20180:66;20095:289;;;;;;;;;;;;;;;;;;20250:66;20095:289;;20318:64;20095:289;;;;;;;;;;;;;;;20088:296;;;20401:151;;;;;;;20417:66;20401:151;;20485:66;20401:151;;;;20394:4;;;:158;20569:288;;;;;;;20586:65;20569:288;;;;;;20653:65;20569:288;;;;;;;;;;;;;20722:65;20569:288;;20789:66;20569:288;;;;;;;;20562:4;;;:295;20878:289;;;;;;;20895:65;20878:289;;;;;;20962:66;20878:289;;;;;;;;;;;;;21032:65;20878:289;;21099:66;20878:289;;;;;;;;20867:8;;;:300;21193:151;;;;;;;21209:66;21193:151;;21277:66;21193:151;;;;21177:13;;;:167;21370:289;;;;;;;21387:65;21370:289;;;;;;21454:65;21370:289;;;;;;;;;;;;;21523:66;21370:289;;21591:66;21370:289;;;;;;;;21354:13;;;;:305;;;;21676:289;;;;;;;21693:66;21676:289;;;;;;21761:65;21676:289;;;;;;;;;;;;;;;;;21830:66;21676:289;;21898:65;21676:289;;;;;;;;;;;21669:4;;;:296;21983:24;;22005:1;21983:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;21975:5:0;;;:32;;;22028:150;;;;;;;;;22044:65;22028:150;;22111:66;22028:150;;;;22017:5;;:8;;-1:-1:-1;;22017:8:0;;;;;;;;;;;;;:161;;;;22199:151;;;;;;;;;22215:66;22199:151;;;;22283:66;22199:151;;;22188:2;:5;;;22194:1;22188:8;;;;;;;;;;;;;;;;;:162;;;;22371:151;;;;;;;;;22387:66;22371:151;;;;22455:66;22371:151;;;22360:2;:5;;;22366:1;22360:8;;;;;;;;;;;;;;;;;:162;;;;22543:151;;;;;;;;;22559:66;22543:151;;;;22627:66;22543:151;;;22532:2;:5;;;22538:1;22532:8;;;;;;;;;;;;;;;;;;:162;20014:2687;:::o;16483:430::-;16540:9;;:::i;:::-;16561:20;;:::i;:::-;16602:3;;16591:14;;:8;16626:3;;;;16615:8;;;:14;16639:8;;;:12;;;16661;16760:4;16757:1;16751:4;16591:5;16661:12;16738:1;16731:4;16726:3;16722:14;16717:48;16706:59;-1:-1:-1;16706:59:0;16850:20;;;;16835:35;;16850:20;16859:9;16835:35;;16898:7;16889:17;;;;;;;;16483:430;;;;;;:::o;15608:462::-;15668:9;;:::i;:::-;15689:20;;:::i;:::-;15730:4;;15719:15;;:8;15755:4;;;;15744:8;;;:15;15780:4;;15769:8;;;:15;15805:4;;;15794:8;;;;:15;;;;15819:12;;15915:1;15909:4;15719:5;15819:12;15896:1;15889:4;15884:3;15880:14;15875:48;15864:59;-1:-1:-1;15864:59:0;16008:20;;;;15993:35;;15233:326;15283:7;;:::i;:::-;15454:3;;15363:77;;15454:8;:20;;;;-1:-1:-1;15466:3:0;;;;:8;15454:20;15450:58;;;15495:13;;;;;;;;;-1:-1:-1;15495:13:0;;;;;;;;-1:-1:-1;15488:20:0;;15450:58;15525:27;;;;;;;;;15533:1;:3;;;15525:27;;;;15549:1;15543;:3;;;:7;;;;;;;;15538:13;;15525:27;;15518:34;-1:-1:-1;15233:326:0;;;;;:::o;14694:455::-;14731:7;;:::i;:::-;-1:-1:-1;14757:385:0;;;;;;;;14779:77;14757:385;;;;;;14871:77;14757:385;;;;;;;;;;;;;;14964:76;14757:385;;15055:76;14757:385;;;;;;;;;;;;;;14694:455;:::o;18090:309::-;18216:16;;;18230:1;18216:16;;;18194:19;18216:16;;;;;;18178:4;;18194:19;;;18216:16;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;18264:16:0;;;18278:1;18264:16;;;;;;;;;18194:38;;-1:-1:-1;18264:16:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18242:38;;18298:2;18290;18293:1;18290:5;;;;;;;;;;;;;;;;;;:10;18310:5;;18318:2;;18310;;18313:1;;18310:5;;;;;;;;;;;;;;:10;18330:5;;18338:2;;18330;;18333:1;;18330:5;;;;;;;;;;;;;;:10;18350:5;;18358:2;;18350;;18353:1;;18350:5;;;;;;;;;;;;;;:10;18377:15;18385:2;18389;18377:7;:15::i;:::-;18370:22;18090:309;-1:-1:-1;;;;;;;18090:309:0:o;18468:415::-;18660:16;;;18674:1;18660:16;;;;;;;;;18622:4;;18638:19;;;;18660:16;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;18708:16:0;;;18722:1;18708:16;;;;;;;;;18638:38;;-1:-1:-1;18708:16:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18686:38;;18742:2;18734;18737:1;18734:5;;;;;;;;;;;;;;;;;;:10;18754:5;;18762:2;;18754;;18757:1;;18754:5;;;;;;;;;;;;;;:10;18774:5;;18782:2;;18774;;18777:1;;18774:5;;;;;;;;;;;;;;:10;18794:5;;18802:2;;18794;;18797:1;;18794:5;;;;;;;;;;;;;;:10;18814:5;;18822:2;;18814;;18817:1;;18814:5;;;;;;;;;;;;;;:10;18834:5;;18842:2;;18834;;18837:1;;18834:5;;;;;;;;;;;;;;:10;18861:15;18869:2;18873;18861:7;:15::i;:::-;18854:22;18468:415;-1:-1:-1;;;;;;;;;18468:415:0:o;17124:899::-;17187:4;17244:13;17279:14;17318:19;17376:6;17687:18;;:::i;:::-;17224:9;;17211;;17715:12;;17211:22;17203:31;;;;;;17260:2;:9;17244:25;;17296:8;17307:1;17296:12;17279:29;;17351:9;17340:21;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;17340:21:0;;17318:43;;17385:1;17376:10;;17371:307;17392:8;17388:1;:12;17371:307;;;17448:2;17451:1;17448:5;;;;;;;;;;;;;;;;;;;:7;17429:16;;:5;;17439:1;17435:5;;;17429:16;;;;;;;;;;;;;;:26;17488:5;;:2;;17491:1;;17488:5;;;;;;;;;;;;;;:7;;;17469:5;17475:1;17479;17475:5;17483:1;17475:9;17469:16;;;;;;;;;;;;;;;;;;:26;17528:5;;:2;;17531:1;;17528:5;;;;;;;;;;;;;;;;:7;:10;17509:16;;:5;;17523:1;17519;17515:5;;:9;;17509:16;;;;;;;;;;;;;;:29;17571:5;;:2;;17574:1;;17571:5;;;;;;;;;;;;;;;;;:7;:10;;17552:16;;:5;;17566:1;17562;17558:5;;:9;;17552:16;;;;;;;;;;;;;;:29;17614:5;;:2;;17617:1;;17614:5;;;;;;;;;;;;;;;;;:7;;:10;17595:16;;:5;;17609:1;17605;17601:5;;:9;;17595:16;;;;;;;;;;;;;;:29;17657:5;;:2;;17660:1;;17657:5;;;;;;;;;;;;;;;;;:7;;;:10;;17638:16;;:5;;17652:1;17648;17644:5;;:9;;17638:16;;;;;;;;;;;;;;:29;17402:3;;;;;17371:307;;;17843:4;17838:3;17831:4;17820:9;17816:20;17809:4;17802:5;17798:16;17795:1;17792;17785:4;17780:3;17776:14;17771:77;17760:88;-1:-1:-1;17760:88:0;17933:20;;;;17918:35;17980:7;17972:16;;;;;;;;-1:-1:-1;18005:6:0;:11;;;;-1:-1:-1;;;;;;;17124:899:0:o;19445:5619::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;19445:5619:0;;;;;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;19445:5619:0;;;-1:-1:-1;;19445:5619:0:o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;19445:5619:0;;;-1:-1:-1;;19445:5619:0:o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;19445:5619:0;;;-1:-1:-1;;19445:5619:0:o;:::-;;;;;;;;;;;;;;;105:10:-1;19445:5619:0;88:34:-1;-1:-1;19445:5619:0;;;-1:-1:-1;;19445:5619:0:o",
  "source": "// This file is LGPL3 Licensed\n\npragma solidity ^0.4.19;\n\n/**\n * @title Elliptic curve operations on twist points for alt_bn128\n * @author Mustafa Al-Bassam (mus@musalbas.com)\n */\nlibrary BN256G2 {\n    uint256 internal constant FIELD_MODULUS = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47;\n    uint256 internal constant TWISTBX = 0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5;\n    uint256 internal constant TWISTBY = 0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2;\n    uint internal constant PTXX = 0;\n    uint internal constant PTXY = 1;\n    uint internal constant PTYX = 2;\n    uint internal constant PTYY = 3;\n    uint internal constant PTZX = 4;\n    uint internal constant PTZY = 5;\n\n    /**\n     * @notice Add two twist points\n     * @param pt1xx Coefficient 1 of x on point 1\n     * @param pt1xy Coefficient 2 of x on point 1\n     * @param pt1yx Coefficient 1 of y on point 1\n     * @param pt1yy Coefficient 2 of y on point 1\n     * @param pt2xx Coefficient 1 of x on point 2\n     * @param pt2xy Coefficient 2 of x on point 2\n     * @param pt2yx Coefficient 1 of y on point 2\n     * @param pt2yy Coefficient 2 of y on point 2\n     * @return (pt3xx, pt3xy, pt3yx, pt3yy)\n     */\n    function ECTwistAdd(\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy,\n        uint256 pt2xx, uint256 pt2xy,\n        uint256 pt2yx, uint256 pt2yy\n    ) public pure returns (\n        uint256, uint256,\n        uint256, uint256\n    ) {\n        assert(_isOnCurve(\n            pt1xx, pt1xy,\n            pt1yx, pt1yy\n        ));\n\n        uint256[6] memory pt3 = _ECTwistAddJacobian(\n            pt1xx, pt1xy,\n            pt1yx, pt1yy,\n            1,     0,\n            pt2xx, pt2xy,\n            pt2yx, pt2yy,\n            1,     0\n        );\n\n        return _fromJacobian(\n            pt3[PTXX], pt3[PTXY],\n            pt3[PTYX], pt3[PTYY],\n            pt3[PTZX], pt3[PTZY]\n        );\n    }\n\n    /**\n     * @notice Multiply a twist point by a scalar\n     * @param s     Scalar to multiply by\n     * @param pt1xx Coefficient 1 of x\n     * @param pt1xy Coefficient 2 of x\n     * @param pt1yx Coefficient 1 of y\n     * @param pt1yy Coefficient 2 of y\n     * @return (pt2xx, pt2xy, pt2yx, pt2yy)\n     */\n    function ECTwistMul(\n        uint256 s,\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy\n    ) public pure returns (\n        uint256, uint256,\n        uint256, uint256\n    ) {\n        assert(_isOnCurve(\n            pt1xx, pt1xy,\n            pt1yx, pt1yy\n        ));\n\n        uint256[6] memory pt2 = _ECTwistMulJacobian(\n            s,\n            pt1xx, pt1xy,\n            pt1yx, pt1yy,\n            1,     0\n        );\n\n        return _fromJacobian(\n            pt2[PTXX], pt2[PTXY],\n            pt2[PTYX], pt2[PTYY],\n            pt2[PTZX], pt2[PTZY]\n        );\n    }\n\n    /**\n     * @notice Get the field modulus\n     * @return The field modulus\n     */\n    function GetFieldModulus() public pure returns (uint256) {\n        return FIELD_MODULUS;\n    }\n\n    function submod(uint256 a, uint256 b, uint256 n) internal pure returns (uint256) {\n        return addmod(a, n - b, n);\n    }\n\n    function _FQ2Mul(\n        uint256 xx, uint256 xy,\n        uint256 yx, uint256 yy\n    ) internal pure returns(uint256, uint256) {\n        return (\n            submod(mulmod(xx, yx, FIELD_MODULUS), mulmod(xy, yy, FIELD_MODULUS), FIELD_MODULUS),\n            addmod(mulmod(xx, yy, FIELD_MODULUS), mulmod(xy, yx, FIELD_MODULUS), FIELD_MODULUS)\n        );\n    }\n\n    function _FQ2Muc(\n        uint256 xx, uint256 xy,\n        uint256 c\n    ) internal pure returns(uint256, uint256) {\n        return (\n            mulmod(xx, c, FIELD_MODULUS),\n            mulmod(xy, c, FIELD_MODULUS)\n        );\n    }\n\n    function _FQ2Add(\n        uint256 xx, uint256 xy,\n        uint256 yx, uint256 yy\n    ) internal pure returns(uint256, uint256) {\n        return (\n            addmod(xx, yx, FIELD_MODULUS),\n            addmod(xy, yy, FIELD_MODULUS)\n        );\n    }\n\n    function _FQ2Sub(\n        uint256 xx, uint256 xy,\n        uint256 yx, uint256 yy\n    ) internal pure returns(uint256 rx, uint256 ry) {\n        return (\n            submod(xx, yx, FIELD_MODULUS),\n            submod(xy, yy, FIELD_MODULUS)\n        );\n    }\n\n    function _FQ2Div(\n        uint256 xx, uint256 xy,\n        uint256 yx, uint256 yy\n    ) internal pure returns(uint256, uint256) {\n        (yx, yy) = _FQ2Inv(yx, yy);\n        return _FQ2Mul(xx, xy, yx, yy);\n    }\n\n    function _FQ2Inv(uint256 x, uint256 y) internal pure returns(uint256, uint256) {\n        uint256 inv = _modInv(addmod(mulmod(y, y, FIELD_MODULUS), mulmod(x, x, FIELD_MODULUS), FIELD_MODULUS), FIELD_MODULUS);\n        return (\n            mulmod(x, inv, FIELD_MODULUS),\n            FIELD_MODULUS - mulmod(y, inv, FIELD_MODULUS)\n        );\n    }\n\n    function _isOnCurve(\n        uint256 xx, uint256 xy,\n        uint256 yx, uint256 yy\n    ) internal pure returns (bool) {\n        uint256 yyx;\n        uint256 yyy;\n        uint256 xxxx;\n        uint256 xxxy;\n        (yyx, yyy) = _FQ2Mul(yx, yy, yx, yy);\n        (xxxx, xxxy) = _FQ2Mul(xx, xy, xx, xy);\n        (xxxx, xxxy) = _FQ2Mul(xxxx, xxxy, xx, xy);\n        (yyx, yyy) = _FQ2Sub(yyx, yyy, xxxx, xxxy);\n        (yyx, yyy) = _FQ2Sub(yyx, yyy, TWISTBX, TWISTBY);\n        return yyx == 0 && yyy == 0;\n    }\n\n    function _modInv(uint256 a, uint256 n) internal pure returns(uint256 t) {\n        t = 0;\n        uint256 newT = 1;\n        uint256 r = n;\n        uint256 newR = a;\n        uint256 q;\n        while (newR != 0) {\n            q = r / newR;\n            (t, newT) = (newT, submod(t, mulmod(q, newT, n), n));\n            (r, newR) = (newR, r - q * newR);\n        }\n    }\n\n    function _toJacobian(\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy\n    ) internal pure returns (\n        uint256, uint256,\n        uint256, uint256,\n        uint256, uint256\n    ) {\n        return (\n            pt1xx, pt1xy,\n            pt1yx, pt1yy,\n            1,     0\n        );\n    }\n\n    function _fromJacobian(\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy,\n        uint256 pt1zx, uint256 pt1zy\n    ) internal pure returns (\n        uint256 pt2xx, uint256 pt2xy,\n        uint256 pt2yx, uint256 pt2yy\n    ) {\n        uint256 invzx;\n        uint256 invzy;\n        (invzx, invzy) = _FQ2Inv(pt1zx, pt1zy);\n        (pt2xx, pt2xy) = _FQ2Mul(pt1xx, pt1xy, invzx, invzy);\n        (pt2yx, pt2yy) = _FQ2Mul(pt1yx, pt1yy, invzx, invzy);\n    }\n\n    function _ECTwistAddJacobian(\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy,\n        uint256 pt1zx, uint256 pt1zy,\n        uint256 pt2xx, uint256 pt2xy,\n        uint256 pt2yx, uint256 pt2yy,\n        uint256 pt2zx, uint256 pt2zy) internal pure returns (uint256[6] pt3) {\n            if (pt1zx == 0 && pt1zy == 0) {\n                (\n                    pt3[PTXX], pt3[PTXY],\n                    pt3[PTYX], pt3[PTYY],\n                    pt3[PTZX], pt3[PTZY]\n                ) = (\n                    pt2xx, pt2xy,\n                    pt2yx, pt2yy,\n                    pt2zx, pt2zy\n                );\n                return;\n            } else if (pt2zx == 0 && pt2zy == 0) {\n                (\n                    pt3[PTXX], pt3[PTXY],\n                    pt3[PTYX], pt3[PTYY],\n                    pt3[PTZX], pt3[PTZY]\n                ) = (\n                    pt1xx, pt1xy,\n                    pt1yx, pt1yy,\n                    pt1zx, pt1zy\n                );\n                return;\n            }\n\n            (pt2yx,     pt2yy)     = _FQ2Mul(pt2yx, pt2yy, pt1zx, pt1zy); // U1 = y2 * z1\n            (pt3[PTYX], pt3[PTYY]) = _FQ2Mul(pt1yx, pt1yy, pt2zx, pt2zy); // U2 = y1 * z2\n            (pt2xx,     pt2xy)     = _FQ2Mul(pt2xx, pt2xy, pt1zx, pt1zy); // V1 = x2 * z1\n            (pt3[PTZX], pt3[PTZY]) = _FQ2Mul(pt1xx, pt1xy, pt2zx, pt2zy); // V2 = x1 * z2\n\n            if (pt2xx == pt3[PTZX] && pt2xy == pt3[PTZY]) {\n                if (pt2yx == pt3[PTYX] && pt2yy == pt3[PTYY]) {\n                    (\n                        pt3[PTXX], pt3[PTXY],\n                        pt3[PTYX], pt3[PTYY],\n                        pt3[PTZX], pt3[PTZY]\n                    ) = _ECTwistDoubleJacobian(pt1xx, pt1xy, pt1yx, pt1yy, pt1zx, pt1zy);\n                    return;\n                }\n                (\n                    pt3[PTXX], pt3[PTXY],\n                    pt3[PTYX], pt3[PTYY],\n                    pt3[PTZX], pt3[PTZY]\n                ) = (\n                    0, 0,\n                    0, 0,\n                    0, 0\n                );\n                return;\n            }\n\n            (pt2zx,     pt2zy)     = _FQ2Mul(pt1zx, pt1zy, pt2zx,     pt2zy);     // W = z1 * z2\n            (pt1xx,     pt1xy)     = _FQ2Sub(pt2yx, pt2yy, pt3[PTYX], pt3[PTYY]); // U = U1 - U2\n            (pt1yx,     pt1yy)     = _FQ2Sub(pt2xx, pt2xy, pt3[PTZX], pt3[PTZY]); // V = V1 - V2\n            (pt1zx,     pt1zy)     = _FQ2Mul(pt1yx, pt1yy, pt1yx,     pt1yy);     // V_squared = V * V\n            (pt2yx,     pt2yy)     = _FQ2Mul(pt1zx, pt1zy, pt3[PTZX], pt3[PTZY]); // V_squared_times_V2 = V_squared * V2\n            (pt1zx,     pt1zy)     = _FQ2Mul(pt1zx, pt1zy, pt1yx,     pt1yy);     // V_cubed = V * V_squared\n            (pt3[PTZX], pt3[PTZY]) = _FQ2Mul(pt1zx, pt1zy, pt2zx,     pt2zy);     // newz = V_cubed * W\n            (pt2xx,     pt2xy)     = _FQ2Mul(pt1xx, pt1xy, pt1xx,     pt1xy);     // U * U\n            (pt2xx,     pt2xy)     = _FQ2Mul(pt2xx, pt2xy, pt2zx,     pt2zy);     // U * U * W\n            (pt2xx,     pt2xy)     = _FQ2Sub(pt2xx, pt2xy, pt1zx,     pt1zy);     // U * U * W - V_cubed\n            (pt2zx,     pt2zy)     = _FQ2Muc(pt2yx, pt2yy, 2);                    // 2 * V_squared_times_V2\n            (pt2xx,     pt2xy)     = _FQ2Sub(pt2xx, pt2xy, pt2zx,     pt2zy);     // A = U * U * W - V_cubed - 2 * V_squared_times_V2\n            (pt3[PTXX], pt3[PTXY]) = _FQ2Mul(pt1yx, pt1yy, pt2xx,     pt2xy);     // newx = V * A\n            (pt1yx,     pt1yy)     = _FQ2Sub(pt2yx, pt2yy, pt2xx,     pt2xy);     // V_squared_times_V2 - A\n            (pt1yx,     pt1yy)     = _FQ2Mul(pt1xx, pt1xy, pt1yx,     pt1yy);     // U * (V_squared_times_V2 - A)\n            (pt1xx,     pt1xy)     = _FQ2Mul(pt1zx, pt1zy, pt3[PTYX], pt3[PTYY]); // V_cubed * U2\n            (pt3[PTYX], pt3[PTYY]) = _FQ2Sub(pt1yx, pt1yy, pt1xx,     pt1xy);     // newy = U * (V_squared_times_V2 - A) - V_cubed * U2\n    }\n\n    function _ECTwistDoubleJacobian(\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy,\n        uint256 pt1zx, uint256 pt1zy\n    ) internal pure returns(\n        uint256 pt2xx, uint256 pt2xy,\n        uint256 pt2yx, uint256 pt2yy,\n        uint256 pt2zx, uint256 pt2zy\n    ) {\n        (pt2xx, pt2xy) = _FQ2Muc(pt1xx, pt1xy, 3);            // 3 * x\n        (pt2xx, pt2xy) = _FQ2Mul(pt2xx, pt2xy, pt1xx, pt1xy); // W = 3 * x * x\n        (pt1zx, pt1zy) = _FQ2Mul(pt1yx, pt1yy, pt1zx, pt1zy); // S = y * z\n        (pt2yx, pt2yy) = _FQ2Mul(pt1xx, pt1xy, pt1yx, pt1yy); // x * y\n        (pt2yx, pt2yy) = _FQ2Mul(pt2yx, pt2yy, pt1zx, pt1zy); // B = x * y * S\n        (pt1xx, pt1xy) = _FQ2Mul(pt2xx, pt2xy, pt2xx, pt2xy); // W * W\n        (pt2zx, pt2zy) = _FQ2Muc(pt2yx, pt2yy, 8);            // 8 * B\n        (pt1xx, pt1xy) = _FQ2Sub(pt1xx, pt1xy, pt2zx, pt2zy); // H = W * W - 8 * B\n        (pt2zx, pt2zy) = _FQ2Mul(pt1zx, pt1zy, pt1zx, pt1zy); // S_squared = S * S\n        (pt2yx, pt2yy) = _FQ2Muc(pt2yx, pt2yy, 4);            // 4 * B\n        (pt2yx, pt2yy) = _FQ2Sub(pt2yx, pt2yy, pt1xx, pt1xy); // 4 * B - H\n        (pt2yx, pt2yy) = _FQ2Mul(pt2yx, pt2yy, pt2xx, pt2xy); // W * (4 * B - H)\n        (pt2xx, pt2xy) = _FQ2Muc(pt1yx, pt1yy, 8);            // 8 * y\n        (pt2xx, pt2xy) = _FQ2Mul(pt2xx, pt2xy, pt1yx, pt1yy); // 8 * y * y\n        (pt2xx, pt2xy) = _FQ2Mul(pt2xx, pt2xy, pt2zx, pt2zy); // 8 * y * y * S_squared\n        (pt2yx, pt2yy) = _FQ2Sub(pt2yx, pt2yy, pt2xx, pt2xy); // newy = W * (4 * B - H) - 8 * y * y * S_squared\n        (pt2xx, pt2xy) = _FQ2Muc(pt1xx, pt1xy, 2);            // 2 * H\n        (pt2xx, pt2xy) = _FQ2Mul(pt2xx, pt2xy, pt1zx, pt1zy); // newx = 2 * H * S\n        (pt2zx, pt2zy) = _FQ2Mul(pt1zx, pt1zy, pt2zx, pt2zy); // S * S_squared\n        (pt2zx, pt2zy) = _FQ2Muc(pt2zx, pt2zy, 8);            // newz = 8 * S * S_squared\n    }\n\n    function _ECTwistMulJacobian(\n        uint256 d,\n        uint256 pt1xx, uint256 pt1xy,\n        uint256 pt1yx, uint256 pt1yy,\n        uint256 pt1zx, uint256 pt1zy\n    ) internal pure returns(uint256[6] pt2) {\n        while (d != 0) {\n            if ((d & 1) != 0) {\n                pt2 = _ECTwistAddJacobian(\n                    pt2[PTXX], pt2[PTXY],\n                    pt2[PTYX], pt2[PTYY],\n                    pt2[PTZX], pt2[PTZY],\n                    pt1xx, pt1xy,\n                    pt1yx, pt1yy,\n                    pt1zx, pt1zy);\n            }\n            (\n                pt1xx, pt1xy,\n                pt1yx, pt1yy,\n                pt1zx, pt1zy\n            ) = _ECTwistDoubleJacobian(\n                pt1xx, pt1xy,\n                pt1yx, pt1yy,\n                pt1zx, pt1zy\n            );\n\n            d = d / 2;\n        }\n    }\n}\n\n// This file is MIT Licensed.\n//\n// Copyright 2017 Christian Reitwiessner\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\npragma solidity ^0.4.14;\nlibrary Pairing {\n    struct G1Point {\n        uint X;\n        uint Y;\n    }\n    // Encoding of field elements is: X[0] * z + X[1]\n    struct G2Point {\n        uint[2] X;\n        uint[2] Y;\n    }\n    /// @return the generator of G1\n    function P1() pure internal returns (G1Point) {\n        return G1Point(1, 2);\n    }\n    /// @return the generator of G2\n    function P2() pure internal returns (G2Point) {\n        return G2Point(\n            [11559732032986387107991004021392285783925812861821192530917403151452391805634,\n             10857046999023057135944570762232829481370756359578518086990519993285655852781],\n            [4082367875863433681332203403145435568316851327593401208105741076214120093531,\n             8495653923123431417604973247489272438418190587263600148770280649306958101930]\n        );\n    }\n    /// @return the negation of p, i.e. p.addition(p.negate()) should be zero.\n    function negate(G1Point p) pure internal returns (G1Point) {\n        // The prime q in the base field F_q for G1\n        uint q = 21888242871839275222246405745257275088696311157297823662689037894645226208583;\n        if (p.X == 0 && p.Y == 0)\n            return G1Point(0, 0);\n        return G1Point(p.X, q - (p.Y % q));\n    }\n    /// @return the sum of two points of G1\n    function addition(G1Point p1, G1Point p2) internal returns (G1Point r) {\n        uint[4] memory input;\n        input[0] = p1.X;\n        input[1] = p1.Y;\n        input[2] = p2.X;\n        input[3] = p2.Y;\n        bool success;\n        assembly {\n            success := call(sub(gas, 2000), 6, 0, input, 0xc0, r, 0x60)\n            // Use \"invalid\" to make gas estimation work\n            switch success case 0 { invalid() }\n        }\n        require(success);\n    }\n    /// @return the sum of two points of G2\n    function addition(G2Point p1, G2Point p2) internal pure returns (G2Point r) {\n        (r.X[1], r.X[0], r.Y[1], r.Y[0]) = BN256G2.ECTwistAdd(p1.X[1],p1.X[0],p1.Y[1],p1.Y[0],p2.X[1],p2.X[0],p2.Y[1],p2.Y[0]);\n    }\n    /// @return the product of a point on G1 and a scalar, i.e.\n    /// p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p.\n    function scalar_mul(G1Point p, uint s) internal returns (G1Point r) {\n        uint[3] memory input;\n        input[0] = p.X;\n        input[1] = p.Y;\n        input[2] = s;\n        bool success;\n        assembly {\n            success := call(sub(gas, 2000), 7, 0, input, 0x80, r, 0x60)\n            // Use \"invalid\" to make gas estimation work\n            switch success case 0 { invalid() }\n        }\n        require (success);\n    }\n    /// @return the result of computing the pairing check\n    /// e(p1[0], p2[0]) *  .... * e(p1[n], p2[n]) == 1\n    /// For example pairing([P1(), P1().negate()], [P2(), P2()]) should\n    /// return true.\n    function pairing(G1Point[] p1, G2Point[] p2) internal returns (bool) {\n        require(p1.length == p2.length);\n        uint elements = p1.length;\n        uint inputSize = elements * 6;\n        uint[] memory input = new uint[](inputSize);\n        for (uint i = 0; i < elements; i++)\n        {\n            input[i * 6 + 0] = p1[i].X;\n            input[i * 6 + 1] = p1[i].Y;\n            input[i * 6 + 2] = p2[i].X[0];\n            input[i * 6 + 3] = p2[i].X[1];\n            input[i * 6 + 4] = p2[i].Y[0];\n            input[i * 6 + 5] = p2[i].Y[1];\n        }\n        uint[1] memory out;\n        bool success;\n        assembly {\n            success := call(sub(gas, 2000), 8, 0, add(input, 0x20), mul(inputSize, 0x20), out, 0x20)\n            // Use \"invalid\" to make gas estimation work\n            switch success case 0 { invalid() }\n        }\n        require(success);\n        return out[0] != 0;\n    }\n    /// Convenience method for a pairing check for two pairs.\n    function pairingProd2(G1Point a1, G2Point a2, G1Point b1, G2Point b2) internal returns (bool) {\n        G1Point[] memory p1 = new G1Point[](2);\n        G2Point[] memory p2 = new G2Point[](2);\n        p1[0] = a1;\n        p1[1] = b1;\n        p2[0] = a2;\n        p2[1] = b2;\n        return pairing(p1, p2);\n    }\n    /// Convenience method for a pairing check for three pairs.\n    function pairingProd3(\n            G1Point a1, G2Point a2,\n            G1Point b1, G2Point b2,\n            G1Point c1, G2Point c2\n    ) internal returns (bool) {\n        G1Point[] memory p1 = new G1Point[](3);\n        G2Point[] memory p2 = new G2Point[](3);\n        p1[0] = a1;\n        p1[1] = b1;\n        p1[2] = c1;\n        p2[0] = a2;\n        p2[1] = b2;\n        p2[2] = c2;\n        return pairing(p1, p2);\n    }\n    /// Convenience method for a pairing check for four pairs.\n    function pairingProd4(\n            G1Point a1, G2Point a2,\n            G1Point b1, G2Point b2,\n            G1Point c1, G2Point c2,\n            G1Point d1, G2Point d2\n    ) internal returns (bool) {\n        G1Point[] memory p1 = new G1Point[](4);\n        G2Point[] memory p2 = new G2Point[](4);\n        p1[0] = a1;\n        p1[1] = b1;\n        p1[2] = c1;\n        p1[3] = d1;\n        p2[0] = a2;\n        p2[1] = b2;\n        p2[2] = c2;\n        p2[3] = d2;\n        return pairing(p1, p2);\n    }\n}\ncontract Verifier {\n    using Pairing for *;\n    struct VerifyingKey {\n        Pairing.G2Point A;\n        Pairing.G1Point B;\n        Pairing.G2Point C;\n        Pairing.G2Point gamma;\n        Pairing.G1Point gammaBeta1;\n        Pairing.G2Point gammaBeta2;\n        Pairing.G2Point Z;\n        Pairing.G1Point[] IC;\n    }\n    struct Proof {\n        Pairing.G1Point A;\n        Pairing.G1Point A_p;\n        Pairing.G2Point B;\n        Pairing.G1Point B_p;\n        Pairing.G1Point C;\n        Pairing.G1Point C_p;\n        Pairing.G1Point K;\n        Pairing.G1Point H;\n    }\n    function verifyingKey() pure internal returns (VerifyingKey vk) {\n        vk.A = Pairing.G2Point([0x1673cae24de1283311f605ed84de0bc14d79582603244567c5883e2d67640ca2, 0x23052b7ebb61fa8703eea7a35bf8987085e174326dc81988d976b771305b4ade], [0x2741ddbbf959d845a94903f999d5d169fc848469009480a76b70dd9cc165ec1c, 0x1087ab46373e0cd0752fbc1ff8331eef6f73886acf9af08aac2b0ffbfe000a]);\n        vk.B = Pairing.G1Point(0x2b67b6be5172d0300f5c128bc1a433f9e20ff5da683ebef26a36db1fff1e7e49, 0x29691c34ebf1cc702e5dec025703e47f0f510ca165f6873ebdb0cef8a0b7258e);\n        vk.C = Pairing.G2Point([0x7076f976446398e6245dc3b27be761c279823676d82ed86a7534af581242e6e, 0x4c3e83973b728004c8cb71d5e5e5ef395cd94a0e565298fb58f9ea12d6a77da], [0x6a3e2dd7d88fae7c05be81d8a18e09411c5202f33cb9719b6ef76b99f6db302, 0x20f2ac0a041ab43be495089cedfc07972920dc9f92208537013ea1ecc619cdbb]);\n        vk.gamma = Pairing.G2Point([0x38a86ed996c6ecf08eaf194ad8b7d830231357ccfa15343c20c2a42c63b51ed, 0x18e406efd472e861f376e68cadae862be1442a16d324b0d12352f4aa32f5d681], [0xf765f0e7855fccbcb8d7839ceba3147042aaaab0b02d82d03f0017691ac5034, 0x2c3e947db54326db708f2d56ce555bfe4182a9f4cda405418d2ad22bc889d198]);\n        vk.gammaBeta1 = Pairing.G1Point(0x2913abe31e0406b26de1d4d3f1a4c3154614c711228fd0b745af3345b78292df, 0x169d525555b8866c73e46ff13b42672d454b0a0191bcb3dc7ec62997a38fb2d5);\n        vk.gammaBeta2 = Pairing.G2Point([0xaeac8cc1f2923956fbd89fc4dba7564e118dea4e8332cf03c5913dbbb293a30, 0x816f683dd187dbf60360153d8ba50b9d034645b98d6a7d6a23542e3851b7a07], [0x2ccdf662ba24097940f670ee88e6bc05ab54b7fbc18293dc6e235d871f07ebf0, 0x2b191f8c6c0d14ebcbc1e54c7d1ce3b5c0b20cce199605a8fbebd6e2d6556cde]);\n        vk.Z = Pairing.G2Point([0x17bdc1c2529dc8b068f0dd39d953a90740b05fcb219158b35c0f1e8b63f8f972, 0x45a46ad508e4d57f7d3c30fe0eb91b45c72b1b7b1e429473ec7e3295cba1b84], [0x1e6f9476986e26bac5a32c791d31887f64c72ce0bc97e8e934afb4265600a0c7, 0xa7a96168c9994e2609c064979f993bf4057118768d59151468fc26369d01d13]);\n        vk.IC = new Pairing.G1Point[](4);\n        vk.IC[0] = Pairing.G1Point(0x45f2548a80f71fc8f3c8799d1b61c6f2879dfe71fc67db1f7a50ca131350b83, 0x222bb162f67070986663ea52c155f233b1006873f70d77f3f39cfcc65049b74f);\n        vk.IC[1] = Pairing.G1Point(0x184569dcbfe2afc5804119c95f21b7b52ddd8af99494345f1387a18c6e7ee235, 0x15b75613ca711d5c694e7d5bffd65e4b30dbf98e2ee6da38a1f2a590a65aaa67);\n        vk.IC[2] = Pairing.G1Point(0x1a05082ca71ca4370ec7e112f36fdecef2eb15e73ba9a8258640f50e747b539a, 0x287e64eb98729cbc14f029e2643a77bc75fbd989d6929a6fc2a4a2b0480893e8);\n        vk.IC[3] = Pairing.G1Point(0x1da3e1dca401bd69203ba224c0403cfa7590e360c816d3eb1615185aeb69cee3, 0x19383ec2e9e8d4b61d804911971e85f47e71489b883164b7319a3eb18fc71c18);\n    }\n    function verify(uint[] input, Proof proof) internal returns (uint) {\n        VerifyingKey memory vk = verifyingKey();\n        require(input.length + 1 == vk.IC.length);\n        // Compute the linear combination vk_x\n        Pairing.G1Point memory vk_x = Pairing.G1Point(0, 0);\n        for (uint i = 0; i < input.length; i++)\n            vk_x = Pairing.addition(vk_x, Pairing.scalar_mul(vk.IC[i + 1], input[i]));\n        vk_x = Pairing.addition(vk_x, vk.IC[0]);\n        if (!Pairing.pairingProd2(proof.A, vk.A, Pairing.negate(proof.A_p), Pairing.P2())) return 1;\n        if (!Pairing.pairingProd2(vk.B, proof.B, Pairing.negate(proof.B_p), Pairing.P2())) return 2;\n        if (!Pairing.pairingProd2(proof.C, vk.C, Pairing.negate(proof.C_p), Pairing.P2())) return 3;\n        if (!Pairing.pairingProd3(\n            proof.K, vk.gamma,\n            Pairing.negate(Pairing.addition(vk_x, Pairing.addition(proof.A, proof.C))), vk.gammaBeta2,\n            Pairing.negate(vk.gammaBeta1), proof.B\n        )) return 4;\n        if (!Pairing.pairingProd3(\n                Pairing.addition(vk_x, proof.A), proof.B,\n                Pairing.negate(proof.H), vk.Z,\n                Pairing.negate(proof.C), Pairing.P2()\n        )) return 5;\n        return 0;\n    }\n    event Verified(string s);\n    function verifyTx(\n            uint[2] a,\n            uint[2] a_p,\n            uint[2][2] b,\n            uint[2] b_p,\n            uint[2] c,\n            uint[2] c_p,\n            uint[2] h,\n            uint[2] k,\n            uint[3] input\n        ) public returns (bool r) {\n        Proof memory proof;\n        proof.A = Pairing.G1Point(a[0], a[1]);\n        proof.A_p = Pairing.G1Point(a_p[0], a_p[1]);\n        proof.B = Pairing.G2Point([b[0][0], b[0][1]], [b[1][0], b[1][1]]);\n        proof.B_p = Pairing.G1Point(b_p[0], b_p[1]);\n        proof.C = Pairing.G1Point(c[0], c[1]);\n        proof.C_p = Pairing.G1Point(c_p[0], c_p[1]);\n        proof.H = Pairing.G1Point(h[0], h[1]);\n        proof.K = Pairing.G1Point(k[0], k[1]);\n        uint[] memory inputValues = new uint[](input.length);\n        for(uint i = 0; i < input.length; i++){\n            inputValues[i] = input[i];\n        }\n        if (verify(inputValues, proof) == 0) {\n            emit Verified(\"Transaction successfully verified.\");\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n",
  "sourcePath": "/home/aznagy/work/zokrates/zokrates-tools/contracts/verifier.sol",
  "ast": {
    "absolutePath": "/home/aznagy/work/zokrates/zokrates-tools/contracts/verifier.sol",
    "exportedSymbols": {
      "BN256G2": [
        1443
      ],
      "Pairing": [
        2081
      ],
      "Verifier": [
        2703
      ]
    },
    "id": 2704,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:24:0"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": "@title Elliptic curve operations on twist points for alt_bn128\n@author Mustafa Al-Bassam (mus@musalbas.com)",
        "fullyImplemented": true,
        "id": 1443,
        "linearizedBaseContracts": [
          1443
        ],
        "name": "BN256G2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 4,
            "name": "FIELD_MODULUS",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "202:108:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "202:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307833303634346537326531333161303239623835303435623638313831353835643937383136613931363837316361386433633230386331366438376366643437",
              "id": 3,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "244:66:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_21888242871839275222246405745257275088696311157297823662689037894645226208583_by_1",
                "typeString": "int_const 2188...(69 digits omitted)...8583"
              },
              "value": "0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 7,
            "name": "TWISTBX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "316:102:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "316:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307832623134396434306365623861616165383162653138393931626530366163336235623463356535353964626566613333323637653664633234613133386535",
              "id": 6,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "352:66:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_19485874751759354771024239261021720505790618469301721065564631296452457478373_by_1",
                "typeString": "int_const 1948...(69 digits omitted)...8373"
              },
              "value": "0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 10,
            "name": "TWISTBY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "424:100:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "424:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783937313362303361663066656434636432636166616465656438666466346137346661303834653532643138353265346132626430363835633331356432",
              "id": 9,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "460:64:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_266929791119991161246907387137283842545076965332900288569378510910307636690_by_1",
                "typeString": "int_const 2669...(67 digits omitted)...6690"
              },
              "value": "0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 13,
            "name": "PTXX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "530:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "530:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 12,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "560:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 16,
            "name": "PTXY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "567:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "567:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 15,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "597:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 19,
            "name": "PTYX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "604:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "604:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 18,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "634:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 22,
            "name": "PTYY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "641:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 20,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "641:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "33",
              "id": 21,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "671:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 25,
            "name": "PTZX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "678:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 23,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "678:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 24,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "708:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 28,
            "name": "PTZY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "715:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 26,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "715:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "35",
              "id": 27,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "745:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5_by_1",
                "typeString": "int_const 5"
              },
              "value": "5"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 105,
              "nodeType": "Block",
              "src": "1506:452:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 57,
                            "name": "pt1xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1547:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 58,
                            "name": "pt1xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32,
                            "src": "1554:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 59,
                            "name": "pt1yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34,
                            "src": "1573:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 60,
                            "name": "pt1yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36,
                            "src": "1580:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 56,
                          "name": "_isOnCurve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 493,
                          "src": "1523:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool)"
                          }
                        },
                        "id": 61,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1523:72:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 55,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2707,
                      "src": "1516:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 62,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1516:80:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 63,
                  "nodeType": "ExpressionStatement",
                  "src": "1516:80:0"
                },
                {
                  "assignments": [
                    68
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 68,
                      "name": "pt3",
                      "nodeType": "VariableDeclaration",
                      "scope": 106,
                      "src": "1607:21:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                        "typeString": "uint256[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 66,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1607:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 67,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 65,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1615:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "1607:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                          "typeString": "uint256[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 83,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 70,
                        "name": "pt1xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30,
                        "src": "1664:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 71,
                        "name": "pt1xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32,
                        "src": "1671:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 72,
                        "name": "pt1yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34,
                        "src": "1690:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 73,
                        "name": "pt1yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36,
                        "src": "1697:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 74,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1716:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 75,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1723:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 76,
                        "name": "pt2xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38,
                        "src": "1738:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 77,
                        "name": "pt2xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40,
                        "src": "1745:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 78,
                        "name": "pt2yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "1764:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 79,
                        "name": "pt2yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44,
                        "src": "1771:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 80,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1790:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 81,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1797:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 69,
                      "name": "_ECTwistAddJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1113,
                      "src": "1631:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$6_memory_ptr_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256[6] memory)"
                      }
                    },
                    "id": 82,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1631:177:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                      "typeString": "uint256[6] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1607:201:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 85,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1853:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 87,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 86,
                          "name": "PTXX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "1857:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1853:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 88,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1864:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 90,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 89,
                          "name": "PTXY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16,
                          "src": "1868:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1864:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 91,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1887:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 93,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 92,
                          "name": "PTYX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1891:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1887:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 94,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1898:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 96,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 95,
                          "name": "PTYY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22,
                          "src": "1902:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1898:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 97,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1921:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 99,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 98,
                          "name": "PTZX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "1925:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1921:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 100,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1932:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 102,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 101,
                          "name": "PTZY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "1936:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1932:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 84,
                      "name": "_fromJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 654,
                      "src": "1826:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1826:125:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 54,
                  "id": 104,
                  "nodeType": "Return",
                  "src": "1819:132:0"
                }
              ]
            },
            "documentation": "@notice Add two twist points\n@param pt1xx Coefficient 1 of x on point 1\n@param pt1xy Coefficient 2 of x on point 1\n@param pt1yx Coefficient 1 of y on point 1\n@param pt1yy Coefficient 2 of y on point 1\n@param pt2xx Coefficient 1 of x on point 2\n@param pt2xy Coefficient 2 of x on point 2\n@param pt2yx Coefficient 1 of y on point 2\n@param pt2yy Coefficient 2 of y on point 2\n@return (pt3xx, pt3xy, pt3yx, pt3yy)",
            "id": 106,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ECTwistAdd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 45,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1278:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1278:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1293:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1293:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1316:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1316:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 36,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1331:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 35,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1331:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 38,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1354:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 37,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1354:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1369:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 39,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1369:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1392:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1392:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1407:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 43,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1407:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1268:158:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 54,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 47,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1457:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 46,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1457:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 49,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1466:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 48,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1466:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 51,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1483:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 50,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1483:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 53,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1492:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 52,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1447:58:0"
            },
            "scope": 1443,
            "src": "1249:709:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 172,
              "nodeType": "Block",
              "src": "2472:393:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 129,
                            "name": "pt1xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 110,
                            "src": "2513:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 130,
                            "name": "pt1xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 112,
                            "src": "2520:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 131,
                            "name": "pt1yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 114,
                            "src": "2539:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 132,
                            "name": "pt1yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 116,
                            "src": "2546:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 128,
                          "name": "_isOnCurve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 493,
                          "src": "2489:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool)"
                          }
                        },
                        "id": 133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2489:72:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 127,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2707,
                      "src": "2482:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 134,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2482:80:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 135,
                  "nodeType": "ExpressionStatement",
                  "src": "2482:80:0"
                },
                {
                  "assignments": [
                    140
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 140,
                      "name": "pt2",
                      "nodeType": "VariableDeclaration",
                      "scope": 173,
                      "src": "2573:21:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                        "typeString": "uint256[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 138,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2573:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 139,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2581:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "2573:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                          "typeString": "uint256[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 150,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 142,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 108,
                        "src": "2630:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 143,
                        "name": "pt1xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 110,
                        "src": "2645:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 144,
                        "name": "pt1xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 112,
                        "src": "2652:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 145,
                        "name": "pt1yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 114,
                        "src": "2671:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 146,
                        "name": "pt1yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 116,
                        "src": "2678:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2697:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2704:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 141,
                      "name": "_ECTwistMulJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1442,
                      "src": "2597:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$6_memory_ptr_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256[6] memory)"
                      }
                    },
                    "id": 149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2597:118:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                      "typeString": "uint256[6] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2573:142:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 152,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2760:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 154,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 153,
                          "name": "PTXX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "2764:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2760:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 155,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2771:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 157,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 156,
                          "name": "PTXY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16,
                          "src": "2775:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2771:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 158,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2794:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 160,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 159,
                          "name": "PTYX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "2798:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2794:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 161,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2805:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 163,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 162,
                          "name": "PTYY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22,
                          "src": "2809:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2805:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 164,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2828:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 166,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 165,
                          "name": "PTZX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "2832:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2828:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 167,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2839:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 169,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 168,
                          "name": "PTZY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "2843:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2839:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 151,
                      "name": "_fromJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 654,
                      "src": "2733:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2733:125:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 126,
                  "id": 171,
                  "nodeType": "Return",
                  "src": "2726:132:0"
                }
              ]
            },
            "documentation": "@notice Multiply a twist point by a scalar\n@param s     Scalar to multiply by\n@param pt1xx Coefficient 1 of x\n@param pt1xy Coefficient 2 of x\n@param pt1yx Coefficient 1 of y\n@param pt1yy Coefficient 2 of y\n@return (pt2xx, pt2xy, pt2yx, pt2yy)",
            "id": 173,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ECTwistMul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 108,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2301:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2301:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 110,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2320:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 109,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2320:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 112,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2335:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2335:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 114,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2358:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2358:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 116,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2373:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2291:101:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 119,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2423:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2423:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 121,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2432:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 120,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2432:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 123,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2449:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 122,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2449:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 125,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2458:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 124,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2458:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2413:58:0"
            },
            "scope": 1443,
            "src": "2272:593:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 180,
              "nodeType": "Block",
              "src": "3014:37:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 178,
                    "name": "FIELD_MODULUS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4,
                    "src": "3031:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 177,
                  "id": 179,
                  "nodeType": "Return",
                  "src": "3024:20:0"
                }
              ]
            },
            "documentation": "@notice Get the field modulus\n@return The field modulus",
            "id": 181,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "GetFieldModulus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 174,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2981:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 176,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 181,
                  "src": "3005:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 175,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3005:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3004:9:0"
            },
            "scope": 1443,
            "src": "2957:94:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 200,
              "nodeType": "Block",
              "src": "3138:43:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 193,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 183,
                        "src": "3162:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 194,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 187,
                          "src": "3165:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 195,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 185,
                          "src": "3169:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3165:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 197,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 187,
                        "src": "3172:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 192,
                      "name": "addmod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "3155:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3155:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 191,
                  "id": 199,
                  "nodeType": "Return",
                  "src": "3148:26:0"
                }
              ]
            },
            "documentation": null,
            "id": 201,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "submod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 183,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3073:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3073:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 185,
                  "name": "b",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3084:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 184,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3084:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 187,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3095:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 186,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3072:33:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 190,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3129:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 189,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3129:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3128:9:0"
            },
            "scope": 1443,
            "src": "3057:124:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 244,
              "nodeType": "Block",
              "src": "3314:228:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 218,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 203,
                                "src": "3359:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 219,
                                "name": "yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 207,
                                "src": "3363:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 220,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3367:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 217,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3352:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3352:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 223,
                                "name": "xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 205,
                                "src": "3390:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 224,
                                "name": "yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "3394:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 225,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3398:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 222,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3383:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3383:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 227,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3414:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 216,
                          "name": "submod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 201,
                          "src": "3345:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3345:83:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 231,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 203,
                                "src": "3456:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 232,
                                "name": "yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "3460:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 233,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3464:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 230,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3449:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3449:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 236,
                                "name": "xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 205,
                                "src": "3487:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 237,
                                "name": "yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 207,
                                "src": "3491:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 238,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3495:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 235,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3480:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3480:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 240,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3511:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 229,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "3442:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3442:83:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 242,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3331:204:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 215,
                  "id": 243,
                  "nodeType": "Return",
                  "src": "3324:211:0"
                }
              ]
            },
            "documentation": null,
            "id": 245,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Mul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 203,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3213:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 202,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3213:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 205,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3225:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3225:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 207,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3245:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 206,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3245:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 209,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3257:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 208,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3257:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3203:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 212,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3296:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 211,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3296:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 214,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3305:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 213,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3305:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3295:18:0"
            },
            "scope": 1443,
            "src": "3187:355:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 270,
              "nodeType": "Block",
              "src": "3662:118:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 259,
                            "name": "xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 247,
                            "src": "3700:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 260,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 251,
                            "src": "3704:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 261,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3707:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 258,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2719,
                          "src": "3693:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3693:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 264,
                            "name": "xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 249,
                            "src": "3742:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 265,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 251,
                            "src": "3746:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 266,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3749:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 263,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2719,
                          "src": "3735:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3735:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 268,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3679:94:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 257,
                  "id": 269,
                  "nodeType": "Return",
                  "src": "3672:101:0"
                }
              ]
            },
            "documentation": null,
            "id": 271,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Muc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 252,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 247,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3574:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 246,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3574:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 249,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3586:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 248,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3586:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 251,
                  "name": "c",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3606:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3606:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3564:57:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 254,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3644:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 253,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3644:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 256,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3653:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 255,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3643:18:0"
            },
            "scope": 1443,
            "src": "3548:232:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 298,
              "nodeType": "Block",
              "src": "3913:120:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 287,
                            "name": "xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 273,
                            "src": "3951:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 288,
                            "name": "yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 277,
                            "src": "3955:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 289,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3959:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 286,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "3944:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3944:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 292,
                            "name": "xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 275,
                            "src": "3994:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 293,
                            "name": "yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 279,
                            "src": "3998:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 294,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4002:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 291,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "3987:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3987:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 296,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3930:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 285,
                  "id": 297,
                  "nodeType": "Return",
                  "src": "3923:103:0"
                }
              ]
            },
            "documentation": null,
            "id": 299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Add",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 280,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 273,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3812:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 272,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3812:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 275,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3824:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 274,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3824:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 277,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3844:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 276,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3844:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 279,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3856:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3856:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3802:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 282,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3895:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3895:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 284,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3904:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3904:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3894:18:0"
            },
            "scope": 1443,
            "src": "3786:247:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 326,
              "nodeType": "Block",
              "src": "4172:120:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 315,
                            "name": "xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 301,
                            "src": "4210:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 316,
                            "name": "yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 305,
                            "src": "4214:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 317,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4218:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 314,
                          "name": "submod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 201,
                          "src": "4203:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4203:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 320,
                            "name": "xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 303,
                            "src": "4253:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 321,
                            "name": "yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 307,
                            "src": "4257:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 322,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4261:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 319,
                          "name": "submod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 201,
                          "src": "4246:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4246:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 324,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4189:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 313,
                  "id": 325,
                  "nodeType": "Return",
                  "src": "4182:103:0"
                }
              ]
            },
            "documentation": null,
            "id": 327,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Sub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 301,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4065:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 300,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4065:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 303,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4077:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 302,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4077:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 305,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4097:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 304,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4097:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 307,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4109:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4109:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4055:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 313,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 310,
                  "name": "rx",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4148:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 309,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4148:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 312,
                  "name": "ry",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4160:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 311,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4160:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4147:24:0"
            },
            "scope": 1443,
            "src": "4039:253:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 358,
              "nodeType": "Block",
              "src": "4425:83:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 342,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 333,
                          "src": "4436:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 343,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 335,
                          "src": "4440:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 344,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4435:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 346,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 333,
                          "src": "4454:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 347,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 335,
                          "src": "4458:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 345,
                        "name": "_FQ2Inv",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "4446:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4446:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "4435:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 350,
                  "nodeType": "ExpressionStatement",
                  "src": "4435:26:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 352,
                        "name": "xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 329,
                        "src": "4486:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 353,
                        "name": "xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 331,
                        "src": "4490:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 354,
                        "name": "yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 333,
                        "src": "4494:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 355,
                        "name": "yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 335,
                        "src": "4498:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 351,
                      "name": "_FQ2Mul",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 245,
                      "src": "4478:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                      }
                    },
                    "id": 356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4478:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 341,
                  "id": 357,
                  "nodeType": "Return",
                  "src": "4471:30:0"
                }
              ]
            },
            "documentation": null,
            "id": 359,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Div",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 329,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4324:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4324:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 331,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4336:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 330,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4336:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 333,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4356:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 332,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4356:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 335,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4368:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 334,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4368:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4314:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 338,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4407:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 337,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4407:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 340,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4416:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 339,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4416:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4406:18:0"
            },
            "scope": 1443,
            "src": "4298:210:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 403,
              "nodeType": "Block",
              "src": "4593:263:0",
              "statements": [
                {
                  "assignments": [
                    371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 371,
                      "name": "inv",
                      "nodeType": "VariableDeclaration",
                      "scope": 404,
                      "src": "4603:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 370,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4603:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 388,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 375,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 363,
                                "src": "4639:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 376,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 363,
                                "src": "4642:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 377,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "4645:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 374,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "4632:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4632:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 380,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 361,
                                "src": "4668:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 381,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 361,
                                "src": "4671:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 382,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "4674:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 379,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "4661:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4661:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 384,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4690:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 373,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "4625:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4625:79:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 386,
                        "name": "FIELD_MODULUS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4,
                        "src": "4706:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 372,
                      "name": "_modInv",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 561,
                      "src": "4617:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4617:103:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4603:117:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 390,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 361,
                            "src": "4758:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 391,
                            "name": "inv",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 371,
                            "src": "4761:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 392,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4766:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 389,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2719,
                          "src": "4751:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4751:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 394,
                          "name": "FIELD_MODULUS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4,
                          "src": "4794:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 396,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 363,
                              "src": "4817:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 397,
                              "name": "inv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 371,
                              "src": "4820:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 398,
                              "name": "FIELD_MODULUS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4,
                              "src": "4825:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 395,
                            "name": "mulmod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2719,
                            "src": "4810:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4810:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4794:45:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 401,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4737:112:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 369,
                  "id": 402,
                  "nodeType": "Return",
                  "src": "4730:119:0"
                }
              ]
            },
            "documentation": null,
            "id": 404,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Inv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 361,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4531:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4531:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 363,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4542:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4542:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4530:22:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 366,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4575:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4575:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 368,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4584:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4584:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4574:18:0"
            },
            "scope": 1443,
            "src": "4514:342:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 492,
              "nodeType": "Block",
              "src": "4981:386:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 418,
                      "name": "yyx",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "4991:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 417,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4991:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 419,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4991:11:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 421,
                      "name": "yyy",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "5012:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 420,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5012:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 422,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5012:11:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 424,
                      "name": "xxxx",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "5033:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 423,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5033:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 425,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5033:12:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 427,
                      "name": "xxxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "5055:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 426,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5055:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 428,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5055:12:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 429,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5078:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 430,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5083:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 431,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5077:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 433,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 410,
                          "src": "5098:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 434,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 412,
                          "src": "5102:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 435,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 410,
                          "src": "5106:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 436,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 412,
                          "src": "5110:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 432,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "5090:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5090:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5077:36:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 439,
                  "nodeType": "ExpressionStatement",
                  "src": "5077:36:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 440,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5124:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 441,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5130:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 442,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5123:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 444,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "5146:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 445,
                          "name": "xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 408,
                          "src": "5150:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 446,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "5154:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 447,
                          "name": "xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 408,
                          "src": "5158:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 443,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "5138:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5138:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5123:38:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 450,
                  "nodeType": "ExpressionStatement",
                  "src": "5123:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 451,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5172:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 452,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5178:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 453,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5171:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 455,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5194:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 456,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5200:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 457,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "5206:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 458,
                          "name": "xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 408,
                          "src": "5210:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 454,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "5186:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5186:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5171:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 461,
                  "nodeType": "ExpressionStatement",
                  "src": "5171:42:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 462,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5224:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 463,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5229:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 464,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5223:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 466,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5244:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 467,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5249:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 468,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5254:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 469,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5260:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 465,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "5236:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5236:29:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5223:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 472,
                  "nodeType": "ExpressionStatement",
                  "src": "5223:42:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 473,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5276:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 474,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5281:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 475,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5275:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 477,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5296:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 478,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5301:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 479,
                          "name": "TWISTBX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7,
                          "src": "5306:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 480,
                          "name": "TWISTBY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "5315:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 476,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "5288:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5288:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5275:48:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 483,
                  "nodeType": "ExpressionStatement",
                  "src": "5275:48:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 484,
                        "name": "yyx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 418,
                        "src": "5340:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5347:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5340:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 487,
                        "name": "yyy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 421,
                        "src": "5352:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5359:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5352:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5340:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 416,
                  "id": 491,
                  "nodeType": "Return",
                  "src": "5333:27:0"
                }
              ]
            },
            "documentation": null,
            "id": 493,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isOnCurve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 406,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4891:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 405,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4891:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 408,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4903:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 407,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4903:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 410,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4923:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 409,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4923:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 412,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4935:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 411,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4935:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4881:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 415,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4975:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 414,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4975:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4974:6:0"
            },
            "scope": 1443,
            "src": "4862:505:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 560,
              "nodeType": "Block",
              "src": "5445:292:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 502,
                      "name": "t",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 500,
                      "src": "5455:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5459:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5455:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 505,
                  "nodeType": "ExpressionStatement",
                  "src": "5455:5:0"
                },
                {
                  "assignments": [
                    507
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 507,
                      "name": "newT",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5470:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 506,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5470:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 509,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5485:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5470:16:0"
                },
                {
                  "assignments": [
                    511
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 511,
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5496:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 510,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5496:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 513,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 512,
                    "name": "n",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 497,
                    "src": "5508:1:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5496:13:0"
                },
                {
                  "assignments": [
                    515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 515,
                      "name": "newR",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5519:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 514,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5519:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 517,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 516,
                    "name": "a",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 495,
                    "src": "5534:1:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5519:16:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 519,
                      "name": "q",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5545:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 518,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5545:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 520,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5545:9:0"
                },
                {
                  "body": {
                    "id": 558,
                    "nodeType": "Block",
                    "src": "5582:149:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 524,
                            "name": "q",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 519,
                            "src": "5596:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 525,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 511,
                              "src": "5600:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 526,
                              "name": "newR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 515,
                              "src": "5604:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5600:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5596:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 529,
                        "nodeType": "ExpressionStatement",
                        "src": "5596:12:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 530,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 500,
                                "src": "5623:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 531,
                                "name": "newT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 507,
                                "src": "5626:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 532,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5622:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 533,
                                "name": "newT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 507,
                                "src": "5635:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 535,
                                    "name": "t",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 500,
                                    "src": "5648:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 537,
                                        "name": "q",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 519,
                                        "src": "5658:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 538,
                                        "name": "newT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 507,
                                        "src": "5661:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 539,
                                        "name": "n",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 497,
                                        "src": "5667:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 536,
                                      "name": "mulmod",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2719,
                                      "src": "5651:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5651:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 541,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 497,
                                    "src": "5671:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 534,
                                  "name": "submod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 201,
                                  "src": "5641:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5641:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 543,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5634:40:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5622:52:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 545,
                        "nodeType": "ExpressionStatement",
                        "src": "5622:52:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 546,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 511,
                                "src": "5689:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 547,
                                "name": "newR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 515,
                                "src": "5692:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 548,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5688:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 549,
                                "name": "newR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 515,
                                "src": "5701:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 550,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 511,
                                  "src": "5707:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 553,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 551,
                                    "name": "q",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 519,
                                    "src": "5711:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 552,
                                    "name": "newR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 515,
                                    "src": "5715:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5711:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5707:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 555,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5700:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5688:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 557,
                        "nodeType": "ExpressionStatement",
                        "src": "5688:32:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 521,
                      "name": "newR",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 515,
                      "src": "5571:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5579:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5571:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 559,
                  "nodeType": "WhileStatement",
                  "src": "5564:167:0"
                }
              ]
            },
            "documentation": null,
            "id": 561,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_modInv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 495,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5390:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 494,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5390:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 497,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5401:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 496,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5401:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5389:22:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 500,
                  "name": "t",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5434:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5434:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5433:11:0"
            },
            "scope": 1443,
            "src": "5373:364:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 592,
              "nodeType": "Block",
              "src": "5953:108:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 584,
                        "name": "pt1xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 563,
                        "src": "5984:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 585,
                        "name": "pt1xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 565,
                        "src": "5991:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 586,
                        "name": "pt1yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 567,
                        "src": "6010:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 587,
                        "name": "pt1yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 569,
                        "src": "6017:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6036:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6043:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "id": 590,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5970:84:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_rational_1_by_1_$_t_rational_0_by_1_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256,int_const 1,int_const 0)"
                    }
                  },
                  "functionReturnParameters": 583,
                  "id": 591,
                  "nodeType": "Return",
                  "src": "5963:91:0"
                }
              ]
            },
            "documentation": null,
            "id": 593,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_toJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 563,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5773:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 562,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5773:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 565,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5788:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5788:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 567,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5811:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5811:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 569,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5826:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 568,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5826:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5763:82:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 572,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5878:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 574,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5887:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5887:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 576,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5904:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5904:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 578,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5913:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 577,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5913:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 580,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5930:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5930:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 582,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5939:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5939:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5868:84:0"
            },
            "scope": 1443,
            "src": "5743:318:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 653,
              "nodeType": "Block",
              "src": "6315:225:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 617,
                      "name": "invzx",
                      "nodeType": "VariableDeclaration",
                      "scope": 654,
                      "src": "6325:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 616,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6325:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 618,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6325:13:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 620,
                      "name": "invzy",
                      "nodeType": "VariableDeclaration",
                      "scope": 654,
                      "src": "6348:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 619,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6348:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 621,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6348:13:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 622,
                          "name": "invzx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 617,
                          "src": "6372:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 623,
                          "name": "invzy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 620,
                          "src": "6379:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 624,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "6371:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 626,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 603,
                          "src": "6396:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 627,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 605,
                          "src": "6403:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 625,
                        "name": "_FQ2Inv",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "6388:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 628,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6388:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "6371:38:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 630,
                  "nodeType": "ExpressionStatement",
                  "src": "6371:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 631,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 608,
                          "src": "6420:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 632,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 610,
                          "src": "6427:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 633,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "6419:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 635,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 595,
                          "src": "6444:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 636,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "6451:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 637,
                          "name": "invzx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 617,
                          "src": "6458:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 638,
                          "name": "invzy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 620,
                          "src": "6465:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 634,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "6436:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6436:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "6419:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 641,
                  "nodeType": "ExpressionStatement",
                  "src": "6419:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 642,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 612,
                          "src": "6482:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 643,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 614,
                          "src": "6489:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 644,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "6481:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 646,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 599,
                          "src": "6506:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 647,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 601,
                          "src": "6513:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 648,
                          "name": "invzx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 617,
                          "src": "6520:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 649,
                          "name": "invzy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 620,
                          "src": "6527:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 645,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "6498:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6498:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "6481:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 652,
                  "nodeType": "ExpressionStatement",
                  "src": "6481:52:0"
                }
              ]
            },
            "documentation": null,
            "id": 654,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_fromJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 595,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6099:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 594,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6099:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 597,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6114:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6114:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 599,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6137:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6137:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 601,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6152:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6152:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 603,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6175:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 602,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6175:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 605,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6190:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 604,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6190:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6089:120:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 608,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6242:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6242:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 610,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6257:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 609,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6257:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 612,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6280:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 611,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6280:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 614,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6295:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 613,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6232:82:0"
            },
            "scope": 1443,
            "src": "6067:473:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1112,
              "nodeType": "Block",
              "src": "6843:3630:0",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 685,
                        "name": "pt1zx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 664,
                        "src": "6861:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6870:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6861:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 690,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 688,
                        "name": "pt1zy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 666,
                        "src": "6875:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6884:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6875:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6861:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 722,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "7221:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7230:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7221:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 725,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "7235:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7244:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7235:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "7221:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 759,
                    "nodeType": "IfStatement",
                    "src": "7217:354:0",
                    "trueBody": {
                      "id": 758,
                      "nodeType": "Block",
                      "src": "7247:324:0",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 729,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7287:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 731,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 730,
                                    "name": "PTXX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13,
                                    "src": "7291:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7287:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 732,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7298:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 733,
                                    "name": "PTXY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16,
                                    "src": "7302:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7298:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 735,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7329:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 737,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 736,
                                    "name": "PTYX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "7333:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7329:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 738,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7340:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 740,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 739,
                                    "name": "PTYY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22,
                                    "src": "7344:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7340:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 741,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7371:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 743,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 742,
                                    "name": "PTZX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25,
                                    "src": "7375:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7371:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 744,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7382:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 746,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 745,
                                    "name": "PTZY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28,
                                    "src": "7386:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7382:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 747,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "TupleExpression",
                              "src": "7265:144:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 748,
                                  "name": "pt1xx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 656,
                                  "src": "7434:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 749,
                                  "name": "pt1xy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 658,
                                  "src": "7441:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 750,
                                  "name": "pt1yx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 660,
                                  "src": "7468:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 751,
                                  "name": "pt1yy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 662,
                                  "src": "7475:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 752,
                                  "name": "pt1zx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 664,
                                  "src": "7502:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 753,
                                  "name": "pt1zy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 666,
                                  "src": "7509:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 754,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7412:120:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "src": "7265:267:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 756,
                          "nodeType": "ExpressionStatement",
                          "src": "7265:267:0"
                        },
                        {
                          "expression": null,
                          "functionReturnParameters": 684,
                          "id": 757,
                          "nodeType": "Return",
                          "src": "7550:7:0"
                        }
                      ]
                    }
                  },
                  "id": 760,
                  "nodeType": "IfStatement",
                  "src": "6857:714:0",
                  "trueBody": {
                    "id": 721,
                    "nodeType": "Block",
                    "src": "6887:324:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 692,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6927:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 694,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 693,
                                  "name": "PTXX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "6931:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6927:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 695,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6938:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 697,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 696,
                                  "name": "PTXY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "6942:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6938:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 698,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6969:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 700,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 699,
                                  "name": "PTYX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "6973:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6969:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 701,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6980:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 703,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 702,
                                  "name": "PTYY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22,
                                  "src": "6984:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6980:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 704,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "7011:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 706,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 705,
                                  "name": "PTZX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25,
                                  "src": "7015:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7011:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 707,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "7022:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 709,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 708,
                                  "name": "PTZY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28,
                                  "src": "7026:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7022:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 710,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6905:144:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 711,
                                "name": "pt2xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 668,
                                "src": "7074:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 712,
                                "name": "pt2xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 670,
                                "src": "7081:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 713,
                                "name": "pt2yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 672,
                                "src": "7108:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 714,
                                "name": "pt2yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 674,
                                "src": "7115:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 715,
                                "name": "pt2zx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 676,
                                "src": "7142:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 716,
                                "name": "pt2zy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 678,
                                "src": "7149:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 717,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7052:120:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "6905:267:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 719,
                        "nodeType": "ExpressionStatement",
                        "src": "6905:267:0"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 684,
                        "id": 720,
                        "nodeType": "Return",
                        "src": "7190:7:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 761,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "7586:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 762,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "7597:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 763,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7585:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 765,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "7618:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 766,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "7625:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 767,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "7632:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 768,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "7639:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 764,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7610:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 769,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7610:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7585:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 771,
                  "nodeType": "ExpressionStatement",
                  "src": "7585:60:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 785,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 772,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7676:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 774,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 773,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "7680:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7676:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 775,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7687:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 777,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 776,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "7691:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7687:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 778,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7675:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 780,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "7708:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 781,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "7715:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 782,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "7722:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 783,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "7729:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 779,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7700:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7700:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7675:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 786,
                  "nodeType": "ExpressionStatement",
                  "src": "7675:60:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 787,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "7766:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 788,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "7777:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 789,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7765:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 791,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "7798:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 792,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "7805:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 793,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "7812:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 794,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "7819:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 790,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7790:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 795,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7790:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7765:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 797,
                  "nodeType": "ExpressionStatement",
                  "src": "7765:60:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 798,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7856:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 800,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 799,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "7860:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7856:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 801,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7867:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 803,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 802,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "7871:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7867:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 804,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7855:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 806,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "7888:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 807,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "7895:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 808,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "7902:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 809,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "7909:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 805,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7880:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 810,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7880:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7855:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 812,
                  "nodeType": "ExpressionStatement",
                  "src": "7855:60:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 813,
                        "name": "pt2xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 668,
                        "src": "7950:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 814,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 683,
                          "src": "7959:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 816,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 815,
                          "name": "PTZX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "7963:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7959:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7950:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 818,
                        "name": "pt2xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 670,
                        "src": "7972:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 819,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 683,
                          "src": "7981:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 821,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 820,
                          "name": "PTZY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "7985:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7981:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7972:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7950:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 897,
                  "nodeType": "IfStatement",
                  "src": "7946:705:0",
                  "trueBody": {
                    "id": 896,
                    "nodeType": "Block",
                    "src": "7992:659:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 824,
                              "name": "pt2yx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 672,
                              "src": "8014:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 825,
                                "name": "pt3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 683,
                                "src": "8023:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                  "typeString": "uint256[6] memory"
                                }
                              },
                              "id": 827,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 826,
                                "name": "PTYX",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "8027:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8023:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8014:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 829,
                              "name": "pt2yy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 674,
                              "src": "8036:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 830,
                                "name": "pt3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 683,
                                "src": "8045:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                  "typeString": "uint256[6] memory"
                                }
                              },
                              "id": 832,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 831,
                                "name": "PTYY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22,
                                "src": "8049:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8045:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8036:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8014:40:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 866,
                        "nodeType": "IfStatement",
                        "src": "8010:342:0",
                        "trueBody": {
                          "id": 865,
                          "nodeType": "Block",
                          "src": "8056:296:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 835,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8104:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 837,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 836,
                                        "name": "PTXX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13,
                                        "src": "8108:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8104:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 838,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8115:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 840,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 839,
                                        "name": "PTXY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "8119:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8115:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 841,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8150:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 843,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 842,
                                        "name": "PTYX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19,
                                        "src": "8154:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8150:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 844,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8161:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 846,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 845,
                                        "name": "PTYY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22,
                                        "src": "8165:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8161:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 847,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8196:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 849,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 848,
                                        "name": "PTZX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25,
                                        "src": "8200:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8196:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 850,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8207:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 852,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 851,
                                        "name": "PTZY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28,
                                        "src": "8211:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8207:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 853,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "8078:160:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 855,
                                      "name": "pt1xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 656,
                                      "src": "8264:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 856,
                                      "name": "pt1xy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 658,
                                      "src": "8271:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 857,
                                      "name": "pt1yx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 660,
                                      "src": "8278:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 858,
                                      "name": "pt1yy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 662,
                                      "src": "8285:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 859,
                                      "name": "pt1zx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 664,
                                      "src": "8292:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 860,
                                      "name": "pt1zy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 666,
                                      "src": "8299:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 854,
                                    "name": "_ECTwistDoubleJacobian",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1355,
                                    "src": "8241:22:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8241:64:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "src": "8078:227:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 863,
                              "nodeType": "ExpressionStatement",
                              "src": "8078:227:0"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 684,
                              "id": 864,
                              "nodeType": "Return",
                              "src": "8327:7:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 867,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8391:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 869,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 868,
                                  "name": "PTXX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "8395:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8391:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 870,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8402:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 872,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 871,
                                  "name": "PTXY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "8406:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8402:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 873,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8433:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 875,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 874,
                                  "name": "PTYX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "8437:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8433:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 876,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8444:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 878,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 877,
                                  "name": "PTYY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22,
                                  "src": "8448:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8444:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 879,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8475:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 881,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 880,
                                  "name": "PTZX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25,
                                  "src": "8479:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8475:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 882,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8486:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 884,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 883,
                                  "name": "PTZY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28,
                                  "src": "8490:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8486:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 885,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8369:144:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8538:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8541:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8564:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8567:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8590:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8593:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 892,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8516:96:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0)"
                            }
                          },
                          "src": "8369:243:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 894,
                        "nodeType": "ExpressionStatement",
                        "src": "8369:243:0"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 684,
                        "id": 895,
                        "nodeType": "Return",
                        "src": "8630:7:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 898,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "8666:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 899,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "8677:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 900,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8665:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 902,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "8698:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 903,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "8705:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 904,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "8712:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 905,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "8723:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 901,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "8690:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8690:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8665:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 908,
                  "nodeType": "ExpressionStatement",
                  "src": "8665:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 909,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "8763:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 910,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "8774:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 911,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8762:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 913,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "8795:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 914,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "8802:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 915,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8809:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 917,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 916,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "8813:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8809:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 918,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8820:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 920,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 919,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "8824:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8820:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 912,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "8787:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8787:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8762:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 923,
                  "nodeType": "ExpressionStatement",
                  "src": "8762:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 924,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "8860:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 925,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "8871:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 926,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8859:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 928,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "8892:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 929,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "8899:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 930,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8906:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 932,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 931,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "8910:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8906:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 933,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8917:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 935,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 934,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "8921:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8917:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 927,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "8884:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 936,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8884:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8859:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 938,
                  "nodeType": "ExpressionStatement",
                  "src": "8859:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 939,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "8957:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 940,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "8968:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 941,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8956:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 943,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "8989:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 944,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "8996:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 945,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "9003:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 946,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "9014:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 942,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "8981:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 947,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8981:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8956:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 949,
                  "nodeType": "ExpressionStatement",
                  "src": "8956:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 950,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "9060:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 951,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "9071:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 952,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9059:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 954,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9092:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 955,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9099:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 956,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9106:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 958,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 957,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "9110:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9106:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 959,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9117:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 961,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 960,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "9121:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9117:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 953,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9084:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9084:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9059:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 964,
                  "nodeType": "ExpressionStatement",
                  "src": "9059:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 965,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9181:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 966,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9192:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 967,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9180:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 969,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9213:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 970,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9220:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 971,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "9227:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 972,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "9238:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 968,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9205:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 973,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9205:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9180:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 975,
                  "nodeType": "ExpressionStatement",
                  "src": "9180:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 976,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9290:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 978,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 977,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "9294:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9290:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 979,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9301:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 981,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 980,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "9305:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9301:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 982,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9289:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 984,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9322:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 985,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9329:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 986,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9336:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 987,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9347:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 983,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9314:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 988,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9314:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9289:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 990,
                  "nodeType": "ExpressionStatement",
                  "src": "9289:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 991,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9394:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 992,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9405:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 993,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9393:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 995,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "9426:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 996,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "9433:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 997,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "9440:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 998,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "9451:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 994,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9418:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9418:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9393:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1001,
                  "nodeType": "ExpressionStatement",
                  "src": "9393:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1002,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9485:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1003,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9496:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1004,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9484:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1006,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9517:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1007,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9524:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1008,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9531:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1009,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9542:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1005,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9509:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9509:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9484:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1012,
                  "nodeType": "ExpressionStatement",
                  "src": "9484:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1013,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9580:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1014,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9591:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1015,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9579:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1017,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9612:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1018,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9619:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1019,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9626:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1020,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9637:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1016,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "9604:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9604:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9579:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1023,
                  "nodeType": "ExpressionStatement",
                  "src": "9579:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1024,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9685:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1025,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9696:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1026,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9684:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1028,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "9717:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1029,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "9724:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9731:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          }
                        ],
                        "id": 1027,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "9709:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9709:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9684:49:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1033,
                  "nodeType": "ExpressionStatement",
                  "src": "9684:49:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1034,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9793:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1035,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9804:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1036,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9792:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1038,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9825:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1039,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9832:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1040,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9839:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1041,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9850:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1037,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "9817:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9817:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9792:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1044,
                  "nodeType": "ExpressionStatement",
                  "src": "9792:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1045,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9927:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1047,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1046,
                            "name": "PTXX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13,
                            "src": "9931:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9927:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1048,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9938:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1050,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1049,
                            "name": "PTXY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "9942:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9938:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1051,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9926:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1053,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "9959:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1054,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "9966:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1055,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9973:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1056,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9984:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1052,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9951:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1057,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9951:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9926:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1059,
                  "nodeType": "ExpressionStatement",
                  "src": "9926:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1060,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10025:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1061,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10036:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1062,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10024:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1064,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "10057:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1065,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "10064:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1066,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "10071:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1067,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "10082:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1063,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "10049:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1068,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10049:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10024:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1070,
                  "nodeType": "ExpressionStatement",
                  "src": "10024:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1071,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10133:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1072,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10144:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1073,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10132:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1075,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "10165:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1076,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "10172:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1077,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10179:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1078,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10190:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1074,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10157:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10157:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10132:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1081,
                  "nodeType": "ExpressionStatement",
                  "src": "10132:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1082,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "10247:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1083,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "10258:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1084,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10246:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1086,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "10279:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1087,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "10286:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1088,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10293:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1090,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1089,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "10297:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10293:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1091,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10304:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1093,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1092,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "10308:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10304:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1085,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10271:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10271:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10246:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1096,
                  "nodeType": "ExpressionStatement",
                  "src": "10246:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1097,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10345:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1099,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1098,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "10349:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "10345:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1100,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10356:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1102,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1101,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "10360:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "10356:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1103,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10344:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1105,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10377:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1106,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10384:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1107,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "10391:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1108,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "10402:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1104,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "10369:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1109,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10369:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10344:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1111,
                  "nodeType": "ExpressionStatement",
                  "src": "10344:64:0"
                }
              ]
            },
            "documentation": null,
            "id": 1113,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_ECTwistAddJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 656,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6584:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6584:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 658,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6599:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6599:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 660,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6622:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 659,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6622:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 662,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6637:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 661,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6637:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 664,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6660:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 663,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6660:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 666,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6675:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 665,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6675:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 668,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6698:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 667,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6698:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 670,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6713:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6713:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 672,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6736:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6736:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 674,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6751:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6751:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 676,
                  "name": "pt2zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6774:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6774:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 678,
                  "name": "pt2zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6789:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6789:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6574:229:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 683,
                  "name": "pt3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6827:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                    "typeString": "uint256[6]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 680,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6827:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 682,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "36",
                      "id": 681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6835:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "6"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "6827:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                      "typeString": "uint256[6]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6826:16:0"
            },
            "scope": 1443,
            "src": "6546:3927:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1354,
              "nodeType": "Block",
              "src": "10773:1584:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1140,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "10784:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1141,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "10791:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1142,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10783:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1144,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "10808:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1145,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "10815:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10822:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          }
                        ],
                        "id": 1143,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "10800:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10800:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10783:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1149,
                  "nodeType": "ExpressionStatement",
                  "src": "10783:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1150,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "10855:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1151,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "10862:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1152,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10854:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1154,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "10879:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1155,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "10886:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1156,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "10893:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1157,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "10900:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1153,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10871:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10871:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10854:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1160,
                  "nodeType": "ExpressionStatement",
                  "src": "10854:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1161,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "10934:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1162,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "10941:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1163,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10933:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1165,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "10958:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1166,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "10965:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1167,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "10972:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1168,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "10979:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1164,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10950:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10950:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10933:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1171,
                  "nodeType": "ExpressionStatement",
                  "src": "10933:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1172,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11009:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1173,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11016:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1174,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11008:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1176,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11033:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1177,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11040:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1178,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "11047:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1179,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "11054:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1175,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11025:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11025:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11008:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1182,
                  "nodeType": "ExpressionStatement",
                  "src": "11008:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1183,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11080:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1184,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11087:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1185,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11079:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1187,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11104:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1188,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11111:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1189,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "11118:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1190,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "11125:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1186,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11096:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11096:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11079:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1193,
                  "nodeType": "ExpressionStatement",
                  "src": "11079:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1194,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11159:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1195,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11166:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1196,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11158:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1198,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11183:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1199,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11190:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1200,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11197:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1201,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11204:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1197,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11175:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11175:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11158:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1204,
                  "nodeType": "ExpressionStatement",
                  "src": "11158:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1205,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11230:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1206,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11237:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1207,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11229:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1209,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11254:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1210,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11261:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11268:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 1208,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "11246:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1212,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11246:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11229:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1214,
                  "nodeType": "ExpressionStatement",
                  "src": "11229:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1215,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11301:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1216,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11308:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1217,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11300:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1219,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11325:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1220,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11332:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1221,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11339:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1222,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11346:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1218,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "11317:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11317:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11300:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1225,
                  "nodeType": "ExpressionStatement",
                  "src": "11300:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1226,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11384:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1227,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11391:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1228,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11383:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1230,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "11408:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1231,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "11415:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1232,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "11422:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1233,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "11429:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1229,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11400:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11400:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11383:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1236,
                  "nodeType": "ExpressionStatement",
                  "src": "11383:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1237,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11467:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1238,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11474:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1239,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11466:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1241,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11491:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1242,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11498:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 1243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11505:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          }
                        ],
                        "id": 1240,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "11483:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11483:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11466:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1246,
                  "nodeType": "ExpressionStatement",
                  "src": "11466:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1247,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11538:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1248,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11545:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1249,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11537:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1251,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11562:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1252,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11569:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1253,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11576:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1254,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11583:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1250,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "11554:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11554:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11537:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1257,
                  "nodeType": "ExpressionStatement",
                  "src": "11537:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1258,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11613:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1259,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11620:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1260,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11612:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1262,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11637:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1263,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11644:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1264,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11651:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1265,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11658:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1261,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11629:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11629:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11612:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1268,
                  "nodeType": "ExpressionStatement",
                  "src": "11612:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1269,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11694:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1270,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11701:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1271,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11693:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1273,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "11718:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1274,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "11725:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11732:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 1272,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "11710:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11710:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11693:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1278,
                  "nodeType": "ExpressionStatement",
                  "src": "11693:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1279,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11765:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1280,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11772:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1281,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11764:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1283,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11789:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1284,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11796:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1285,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "11803:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1286,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "11810:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1282,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11781:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11781:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11764:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1289,
                  "nodeType": "ExpressionStatement",
                  "src": "11764:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1290,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11840:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1291,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11847:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1292,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11839:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1294,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11864:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1295,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11871:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1296,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11878:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1297,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11885:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1293,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11856:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11856:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11839:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1300,
                  "nodeType": "ExpressionStatement",
                  "src": "11839:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1310,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1301,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11927:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1302,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11934:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1303,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11926:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1305,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11951:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1306,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11958:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1307,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11965:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1308,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11972:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1304,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "11943:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1309,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11943:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11926:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1311,
                  "nodeType": "ExpressionStatement",
                  "src": "11926:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1312,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "12039:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1313,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "12046:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1314,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12038:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1316,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "12063:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1317,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "12070:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12077:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          }
                        ],
                        "id": 1315,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "12055:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12055:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12038:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1321,
                  "nodeType": "ExpressionStatement",
                  "src": "12038:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1322,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "12110:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1323,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "12117:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1324,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12109:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1326,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "12134:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1327,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "12141:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1328,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "12148:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1329,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "12155:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1325,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "12126:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12126:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12109:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1332,
                  "nodeType": "ExpressionStatement",
                  "src": "12109:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1333,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12192:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1334,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12199:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1335,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12191:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1337,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "12216:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1338,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "12223:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1339,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12230:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1340,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12237:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1336,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "12208:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1341,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12208:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12191:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1343,
                  "nodeType": "ExpressionStatement",
                  "src": "12191:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1344,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12271:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1345,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12278:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1346,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12270:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1348,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12295:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1349,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12302:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12309:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 1347,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "12287:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12287:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12270:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1353,
                  "nodeType": "ExpressionStatement",
                  "src": "12270:41:0"
                }
              ]
            },
            "documentation": null,
            "id": 1355,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_ECTwistDoubleJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1115,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10520:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10520:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1117,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10535:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1116,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10535:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1119,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10558:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10558:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1121,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10573:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1120,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10573:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1123,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10596:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1122,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10596:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1125,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10611:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1124,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10611:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10510:120:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1139,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1128,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10662:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10662:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1130,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10677:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10677:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1132,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10700:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10700:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1134,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10715:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10715:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1136,
                  "name": "pt2zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10738:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1135,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10738:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1138,
                  "name": "pt2zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10753:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1137,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10753:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10652:120:0"
            },
            "scope": 1443,
            "src": "10479:1878:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1441,
              "nodeType": "Block",
              "src": "12569:631:0",
              "statements": [
                {
                  "body": {
                    "id": 1439,
                    "nodeType": "Block",
                    "src": "12594:600:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1379,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1357,
                                  "src": "12613:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12617:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12613:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1382,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12612:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12623:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12612:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1415,
                        "nodeType": "IfStatement",
                        "src": "12608:305:0",
                        "trueBody": {
                          "id": 1414,
                          "nodeType": "Block",
                          "src": "12626:287:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1385,
                                  "name": "pt2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1374,
                                  "src": "12644:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1387,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12691:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1389,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1388,
                                        "name": "PTXX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13,
                                        "src": "12695:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12691:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1390,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12702:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1392,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1391,
                                        "name": "PTXY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "12706:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12702:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1393,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12733:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1395,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1394,
                                        "name": "PTYX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19,
                                        "src": "12737:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12733:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1396,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12744:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1398,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1397,
                                        "name": "PTYY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22,
                                        "src": "12748:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12744:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1399,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12775:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1401,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1400,
                                        "name": "PTZX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25,
                                        "src": "12779:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12775:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1402,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12786:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1404,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1403,
                                        "name": "PTZY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28,
                                        "src": "12790:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12786:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1405,
                                      "name": "pt1xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1359,
                                      "src": "12817:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1406,
                                      "name": "pt1xy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1361,
                                      "src": "12824:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1407,
                                      "name": "pt1yx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1363,
                                      "src": "12851:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1408,
                                      "name": "pt1yy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1365,
                                      "src": "12858:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1409,
                                      "name": "pt1zx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1367,
                                      "src": "12885:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1410,
                                      "name": "pt1zy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1369,
                                      "src": "12892:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1386,
                                    "name": "_ECTwistAddJacobian",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1113,
                                    "src": "12650:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$6_memory_ptr_$",
                                      "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256[6] memory)"
                                    }
                                  },
                                  "id": 1411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12650:248:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "src": "12644:254:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                  "typeString": "uint256[6] memory"
                                }
                              },
                              "id": 1413,
                              "nodeType": "ExpressionStatement",
                              "src": "12644:254:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1416,
                                "name": "pt1xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1359,
                                "src": "12944:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1417,
                                "name": "pt1xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1361,
                                "src": "12951:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1418,
                                "name": "pt1yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1363,
                                "src": "12974:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1419,
                                "name": "pt1yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1365,
                                "src": "12981:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1420,
                                "name": "pt1zx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "13004:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1421,
                                "name": "pt1zy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1369,
                                "src": "13011:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1422,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "12926:104:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1424,
                                "name": "pt1xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1359,
                                "src": "13073:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1425,
                                "name": "pt1xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1361,
                                "src": "13080:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1426,
                                "name": "pt1yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1363,
                                "src": "13103:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1427,
                                "name": "pt1yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1365,
                                "src": "13110:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1428,
                                "name": "pt1zx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "13133:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1429,
                                "name": "pt1zy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1369,
                                "src": "13140:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1423,
                              "name": "_ECTwistDoubleJacobian",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "13033:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 1430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13033:126:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "12926:233:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1432,
                        "nodeType": "ExpressionStatement",
                        "src": "12926:233:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1433,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1357,
                            "src": "13174:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1434,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1357,
                              "src": "13178:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 1435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13182:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "13178:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13174:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1438,
                        "nodeType": "ExpressionStatement",
                        "src": "13174:9:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1376,
                      "name": "d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1357,
                      "src": "12586:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1377,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12591:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12586:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1440,
                  "nodeType": "WhileStatement",
                  "src": "12579:615:0"
                }
              ]
            },
            "documentation": null,
            "id": 1442,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_ECTwistMulJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1370,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1357,
                  "name": "d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12401:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12401:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1359,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12420:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12420:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1361,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12435:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12435:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1363,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12458:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12458:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1365,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12473:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1364,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12473:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1367,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12496:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1366,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12496:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1369,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12511:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1368,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12511:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12391:139:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1374,
                  "name": "pt2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12553:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                    "typeString": "uint256[6]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1371,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12553:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1373,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "36",
                      "id": 1372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12561:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "6"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12553:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                      "typeString": "uint256[6]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12552:16:0"
            },
            "scope": 1443,
            "src": "12363:837:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2704,
        "src": "180:13022:0"
      },
      {
        "id": 1444,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".14"
        ],
        "nodeType": "PragmaDirective",
        "src": "14309:24:0"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2081,
        "linearizedBaseContracts": [
          2081
        ],
        "name": "Pairing",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "Pairing.G1Point",
            "id": 1449,
            "members": [
              {
                "constant": false,
                "id": 1446,
                "name": "X",
                "nodeType": "VariableDeclaration",
                "scope": 1449,
                "src": "14381:6:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1445,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "14381:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1448,
                "name": "Y",
                "nodeType": "VariableDeclaration",
                "scope": 1449,
                "src": "14397:6:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1447,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "14397:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "G1Point",
            "nodeType": "StructDefinition",
            "scope": 2081,
            "src": "14356:54:0",
            "visibility": "public"
          },
          {
            "canonicalName": "Pairing.G2Point",
            "id": 1458,
            "members": [
              {
                "constant": false,
                "id": 1453,
                "name": "X",
                "nodeType": "VariableDeclaration",
                "scope": 1458,
                "src": "14494:9:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                  "typeString": "uint256[2]"
                },
                "typeName": {
                  "baseType": {
                    "id": 1450,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14494:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1452,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 1451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14499:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "2"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "14494:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                    "typeString": "uint256[2]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1457,
                "name": "Y",
                "nodeType": "VariableDeclaration",
                "scope": 1458,
                "src": "14513:9:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                  "typeString": "uint256[2]"
                },
                "typeName": {
                  "baseType": {
                    "id": 1454,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14513:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1456,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 1455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14518:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "2"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "14513:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                    "typeString": "uint256[2]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "G2Point",
            "nodeType": "StructDefinition",
            "scope": 2081,
            "src": "14469:60:0",
            "visibility": "public"
          },
          {
            "body": {
              "id": 1468,
              "nodeType": "Block",
              "src": "14616:37:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14641:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14644:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1463,
                      "name": "G1Point",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1449,
                      "src": "14633:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                        "typeString": "type(struct Pairing.G1Point storage pointer)"
                      }
                    },
                    "id": 1466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14633:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "functionReturnParameters": 1462,
                  "id": 1467,
                  "nodeType": "Return",
                  "src": "14626:20:0"
                }
              ]
            },
            "documentation": "@return the generator of G1",
            "id": 1469,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "P1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1459,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14581:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1461,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "14607:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1460,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "14607:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14606:9:0"
            },
            "scope": 2081,
            "src": "14570:83:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1483,
              "nodeType": "Block",
              "src": "14740:409:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3131353539373332303332393836333837313037393931303034303231333932323835373833393235383132383631383231313932353330393137343033313531343532333931383035363334",
                            "id": 1475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14779:77:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_11559732032986387107991004021392285783925812861821192530917403151452391805634_by_1",
                              "typeString": "int_const 1155...(69 digits omitted)...5634"
                            },
                            "value": "11559732032986387107991004021392285783925812861821192530917403151452391805634"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "3130383537303436393939303233303537313335393434353730373632323332383239343831333730373536333539353738353138303836393930353139393933323835363535383532373831",
                            "id": 1476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14871:77:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10857046999023057135944570762232829481370756359578518086990519993285655852781_by_1",
                              "typeString": "int_const 1085...(69 digits omitted)...2781"
                            },
                            "value": "10857046999023057135944570762232829481370756359578518086990519993285655852781"
                          }
                        ],
                        "id": 1477,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "14778:171:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "34303832333637383735383633343333363831333332323033343033313435343335353638333136383531333237353933343031323038313035373431303736323134313230303933353331",
                            "id": 1478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14964:76:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4082367875863433681332203403145435568316851327593401208105741076214120093531_by_1",
                              "typeString": "int_const 4082...(68 digits omitted)...3531"
                            },
                            "value": "4082367875863433681332203403145435568316851327593401208105741076214120093531"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "38343935363533393233313233343331343137363034393733323437343839323732343338343138313930353837323633363030313438373730323830363439333036393538313031393330",
                            "id": 1479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15055:76:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8495653923123431417604973247489272438418190587263600148770280649306958101930_by_1",
                              "typeString": "int_const 8495...(68 digits omitted)...1930"
                            },
                            "value": "8495653923123431417604973247489272438418190587263600148770280649306958101930"
                          }
                        ],
                        "id": 1480,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "14963:169:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        }
                      ],
                      "id": 1474,
                      "name": "G2Point",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1458,
                      "src": "14757:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                        "typeString": "type(struct Pairing.G2Point storage pointer)"
                      }
                    },
                    "id": 1481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14757:385:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "functionReturnParameters": 1473,
                  "id": 1482,
                  "nodeType": "Return",
                  "src": "14750:392:0"
                }
              ]
            },
            "documentation": "@return the generator of G2",
            "id": 1484,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "P2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1470,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14705:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1472,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1484,
                  "src": "14731:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1471,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "14731:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14730:9:0"
            },
            "scope": 2081,
            "src": "14694:455:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1522,
              "nodeType": "Block",
              "src": "15292:267:0",
              "statements": [
                {
                  "assignments": [
                    1492
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1492,
                      "name": "q",
                      "nodeType": "VariableDeclaration",
                      "scope": 1523,
                      "src": "15354:6:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1491,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15354:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1494,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "3231383838323432383731383339323735323232323436343035373435323537323735303838363936333131313537323937383233363632363839303337383934363435323236323038353833",
                    "id": 1493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15363:77:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_21888242871839275222246405745257275088696311157297823662689037894645226208583_by_1",
                      "typeString": "int_const 2188...(69 digits omitted)...8583"
                    },
                    "value": "21888242871839275222246405745257275088696311157297823662689037894645226208583"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15354:86:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1495,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "15454:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        "id": 1496,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "X",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1446,
                        "src": "15454:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15461:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "15454:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1502,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1499,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "15466:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        "id": 1500,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "15466:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15473:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "15466:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15454:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1509,
                  "nodeType": "IfStatement",
                  "src": "15450:58:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15503:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15506:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1504,
                        "name": "G1Point",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1449,
                        "src": "15495:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 1507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15495:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "functionReturnParameters": 1490,
                    "id": 1508,
                    "nodeType": "Return",
                    "src": "15488:20:0"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1511,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "15533:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        "id": 1512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "X",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1446,
                        "src": "15533:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1513,
                          "name": "q",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1492,
                          "src": "15538:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1514,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1486,
                                  "src": "15543:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                },
                                "id": 1515,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Y",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1448,
                                "src": "15543:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1516,
                                "name": "q",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1492,
                                "src": "15549:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15543:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1518,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "15542:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "15538:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1510,
                      "name": "G1Point",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1449,
                      "src": "15525:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                        "typeString": "type(struct Pairing.G1Point storage pointer)"
                      }
                    },
                    "id": 1520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15525:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "functionReturnParameters": 1490,
                  "id": 1521,
                  "nodeType": "Return",
                  "src": "15518:34:0"
                }
              ]
            },
            "documentation": "@return the negation of p, i.e. p.addition(p.negate()) should be zero.",
            "id": 1523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "negate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1486,
                  "name": "p",
                  "nodeType": "VariableDeclaration",
                  "scope": 1523,
                  "src": "15249:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1485,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15249:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15248:11:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1489,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1523,
                  "src": "15283:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1488,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15283:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15282:9:0"
            },
            "scope": 2081,
            "src": "15233:326:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1574,
              "nodeType": "Block",
              "src": "15679:391:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1536,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 1575,
                      "src": "15689:20:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                        "typeString": "uint256[4]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1534,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15689:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1535,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 1533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15694:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "4"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "15689:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr",
                          "typeString": "uint256[4]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1537,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15689:20:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1538,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15719:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1540,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15725:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15719:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1541,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1525,
                        "src": "15730:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1542,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "X",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1446,
                      "src": "15730:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15719:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1544,
                  "nodeType": "ExpressionStatement",
                  "src": "15719:15:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1545,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15744:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1547,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15750:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15744:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1548,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1525,
                        "src": "15755:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1549,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Y",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "15755:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15744:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1551,
                  "nodeType": "ExpressionStatement",
                  "src": "15744:15:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1552,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15769:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1554,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15775:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15769:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1555,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "15780:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1556,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "X",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1446,
                      "src": "15780:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15769:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1558,
                  "nodeType": "ExpressionStatement",
                  "src": "15769:15:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1559,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15794:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1561,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 1560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15800:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15794:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1562,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "15805:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Y",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "15805:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15794:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1565,
                  "nodeType": "ExpressionStatement",
                  "src": "15794:15:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1567,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1575,
                      "src": "15819:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1566,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15819:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1568,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15819:12:0"
                },
                {
                  "externalReferences": [
                    {
                      "input": {
                        "declaration": 1536,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15902:5:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "r": {
                        "declaration": 1530,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15915:1:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1567,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15864:7:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1567,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16000:7:0",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1569,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    success := call(sub(gas(), 2000), 6, 0, input, 0xc0, r, 0x60)\n    switch success\n    case 0 {\n        invalid()\n    }\n}",
                  "src": "15841:213:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1571,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1567,
                        "src": "16055:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1570,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "16047:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16047:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1573,
                  "nodeType": "ExpressionStatement",
                  "src": "16047:16:0"
                }
              ]
            },
            "documentation": "@return the sum of two points of G1",
            "id": 1575,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1525,
                  "name": "p1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1575,
                  "src": "15626:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1524,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15626:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1527,
                  "name": "p2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1575,
                  "src": "15638:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1526,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15638:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15625:24:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1530,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1575,
                  "src": "15668:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1529,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15668:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15667:11:0"
            },
            "scope": 2081,
            "src": "15608:462:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1639,
              "nodeType": "Block",
              "src": "16195:135:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1584,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16206:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1587,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16206:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1588,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16210:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16206:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1589,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16214:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1590,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16214:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1592,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16218:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16214:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1593,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16222:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1594,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16222:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1596,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16226:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16222:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1597,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16230:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1598,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16230:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1600,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16234:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16230:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1601,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "16205:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256,uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1604,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16259:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1605,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16259:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1607,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16264:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16259:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1608,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16267:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1609,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16267:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1611,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16272:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16267:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1612,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16275:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1613,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16275:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1615,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16280:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16275:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1616,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16283:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1617,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16283:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1619,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16288:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16283:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1620,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16291:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1621,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16291:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1623,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16296:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16291:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1624,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16299:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1625,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16299:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1627,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16304:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16299:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1628,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16307:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1629,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16307:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1631,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16312:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16307:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1632,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16315:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1633,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16315:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1635,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16320:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16315:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1602,
                          "name": "BN256G2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1443,
                          "src": "16240:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_BN256G2_$1443_$",
                            "typeString": "type(library BN256G2)"
                          }
                        },
                        "id": 1603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "ECTwistAdd",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 106,
                        "src": "16240:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                        }
                      },
                      "id": 1636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16240:83:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256,uint256,uint256)"
                      }
                    },
                    "src": "16205:118:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1638,
                  "nodeType": "ExpressionStatement",
                  "src": "16205:118:0"
                }
              ]
            },
            "documentation": "@return the sum of two points of G2",
            "id": 1640,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1577,
                  "name": "p1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1640,
                  "src": "16137:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1576,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "16137:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1579,
                  "name": "p2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1640,
                  "src": "16149:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1578,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "16149:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16136:24:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1582,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1640,
                  "src": "16184:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1581,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "16184:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16183:11:0"
            },
            "scope": 2081,
            "src": "16119:211:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1683,
              "nodeType": "Block",
              "src": "16551:362:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1653,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 1684,
                      "src": "16561:20:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                        "typeString": "uint256[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1651,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "16561:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1652,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16566:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "16561:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                          "typeString": "uint256[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1654,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16561:20:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1655,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "16591:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 1657,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16597:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16591:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1658,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1642,
                        "src": "16602:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1659,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "X",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1446,
                      "src": "16602:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16591:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1661,
                  "nodeType": "ExpressionStatement",
                  "src": "16591:14:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1662,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "16615:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 1664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16621:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16615:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1665,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1642,
                        "src": "16626:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Y",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "16626:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16615:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1668,
                  "nodeType": "ExpressionStatement",
                  "src": "16615:14:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1669,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "16639:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 1671,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16645:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16639:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1672,
                      "name": "s",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1644,
                      "src": "16650:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16639:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1674,
                  "nodeType": "ExpressionStatement",
                  "src": "16639:12:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1676,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1684,
                      "src": "16661:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1675,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "16661:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1677,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16661:12:0"
                },
                {
                  "externalReferences": [
                    {
                      "input": {
                        "declaration": 1653,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16744:5:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "r": {
                        "declaration": 1647,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16757:1:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1676,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16706:7:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1676,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16842:7:0",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1678,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    success := call(sub(gas(), 2000), 7, 0, input, 0x80, r, 0x60)\n    switch success\n    case 0 {\n        invalid()\n    }\n}",
                  "src": "16683:213:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1680,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1676,
                        "src": "16898:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1679,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "16889:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16889:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1682,
                  "nodeType": "ExpressionStatement",
                  "src": "16889:17:0"
                }
              ]
            },
            "documentation": "@return the product of a point on G1 and a scalar, i.e.\n p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p.",
            "id": 1684,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "scalar_mul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1642,
                  "name": "p",
                  "nodeType": "VariableDeclaration",
                  "scope": 1684,
                  "src": "16503:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1641,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "16503:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1644,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 1684,
                  "src": "16514:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1643,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16514:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16502:19:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1648,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1647,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1684,
                  "src": "16540:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1646,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "16540:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16539:11:0"
            },
            "scope": 2081,
            "src": "16483:430:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1842,
              "nodeType": "Block",
              "src": "17193:830:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1696,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1687,
                            "src": "17211:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory[] memory"
                            }
                          },
                          "id": 1697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17211:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1698,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1690,
                            "src": "17224:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                              "typeString": "struct Pairing.G2Point memory[] memory"
                            }
                          },
                          "id": 1699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17224:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17211:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "17203:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17203:31:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1702,
                  "nodeType": "ExpressionStatement",
                  "src": "17203:31:0"
                },
                {
                  "assignments": [
                    1704
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1704,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17244:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1703,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17244:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1707,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1705,
                      "name": "p1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1687,
                      "src": "17260:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory[] memory"
                      }
                    },
                    "id": 1706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "17260:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17244:25:0"
                },
                {
                  "assignments": [
                    1709
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1709,
                      "name": "inputSize",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17279:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1708,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17279:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1713,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1710,
                      "name": "elements",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1704,
                      "src": "17296:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "36",
                      "id": 1711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17307:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_6_by_1",
                        "typeString": "int_const 6"
                      },
                      "value": "6"
                    },
                    "src": "17296:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17279:29:0"
                },
                {
                  "assignments": [
                    1717
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1717,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17318:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1715,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17318:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1716,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "17318:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1723,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1721,
                        "name": "inputSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1709,
                        "src": "17351:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1720,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "17340:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1718,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17344:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1719,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "17344:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 1722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17340:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17318:43:0"
                },
                {
                  "body": {
                    "id": 1820,
                    "nodeType": "Block",
                    "src": "17415:263:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1734,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17429:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1740,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1735,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17435:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17439:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17435:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17443:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "17435:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17429:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1741,
                                "name": "p1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1687,
                                "src": "17448:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                                  "typeString": "struct Pairing.G1Point memory[] memory"
                                }
                              },
                              "id": 1743,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1742,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1725,
                                "src": "17451:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17448:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            },
                            "id": 1744,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1446,
                            "src": "17448:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17429:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1746,
                        "nodeType": "ExpressionStatement",
                        "src": "17429:26:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1747,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17469:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1753,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1748,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17475:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1749,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17479:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17475:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17483:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "17475:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17469:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1754,
                                "name": "p1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1687,
                                "src": "17488:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                                  "typeString": "struct Pairing.G1Point memory[] memory"
                                }
                              },
                              "id": 1756,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1755,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1725,
                                "src": "17491:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17488:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            },
                            "id": 1757,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1448,
                            "src": "17488:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17469:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1759,
                        "nodeType": "ExpressionStatement",
                        "src": "17469:26:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1760,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17509:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1766,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1761,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17515:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1762,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17519:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17515:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17523:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "17515:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17509:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1767,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17528:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1769,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1768,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17531:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17528:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1770,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "X",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1453,
                              "src": "17528:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1772,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17536:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17528:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17509:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1774,
                        "nodeType": "ExpressionStatement",
                        "src": "17509:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1775,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17552:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1781,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1776,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17558:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17562:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17558:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 1779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17566:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "src": "17558:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17552:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1782,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17571:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1784,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1783,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17574:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17571:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "X",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1453,
                              "src": "17571:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1787,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17579:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17571:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17552:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1789,
                        "nodeType": "ExpressionStatement",
                        "src": "17552:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1790,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17595:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1796,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1791,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17601:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17605:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17601:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 1794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17609:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "17601:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17595:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1797,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17614:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1799,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1798,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17617:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17614:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "Y",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1457,
                              "src": "17614:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1802,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17622:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17614:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17595:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1804,
                        "nodeType": "ExpressionStatement",
                        "src": "17595:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1805,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17638:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1811,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1806,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17644:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17648:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17644:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "35",
                                "id": 1809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17652:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "src": "17644:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17638:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1812,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17657:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1814,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1813,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17660:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17657:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1815,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "Y",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1457,
                              "src": "17657:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1817,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17665:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17657:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17638:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1819,
                        "nodeType": "ExpressionStatement",
                        "src": "17638:29:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1728,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1725,
                      "src": "17388:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1729,
                      "name": "elements",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1704,
                      "src": "17392:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17388:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1821,
                  "initializationExpression": {
                    "assignments": [
                      1725
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1725,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1843,
                        "src": "17376:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1724,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17376:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1727,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17385:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17376:10:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "17402:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1731,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1725,
                        "src": "17402:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1733,
                    "nodeType": "ExpressionStatement",
                    "src": "17402:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "17371:307:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1826,
                      "name": "out",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17687:18:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr",
                        "typeString": "uint256[1]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1824,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17687:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1825,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17692:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "1"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "17687:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$1_storage_ptr",
                          "typeString": "uint256[1]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1827,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17687:18:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1829,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17715:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1828,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "17715:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1830,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17715:12:0"
                },
                {
                  "externalReferences": [
                    {
                      "out": {
                        "declaration": 1826,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17838:3:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "input": {
                        "declaration": 1717,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17802:5:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "inputSize": {
                        "declaration": 1709,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17820:9:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1829,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17760:7:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1829,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17925:7:0",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1831,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    success := call(sub(gas(), 2000), 8, 0, add(input, 0x20), mul(inputSize, 0x20), out, 0x20)\n    switch success\n    case 0 {\n        invalid()\n    }\n}",
                  "src": "17737:242:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1833,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1829,
                        "src": "17980:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1832,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "17972:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17972:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1835,
                  "nodeType": "ExpressionStatement",
                  "src": "17972:16:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1836,
                        "name": "out",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1826,
                        "src": "18005:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr",
                          "typeString": "uint256[1] memory"
                        }
                      },
                      "id": 1838,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18009:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "18005:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1839,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18015:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18005:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1694,
                  "id": 1841,
                  "nodeType": "Return",
                  "src": "17998:18:0"
                }
              ]
            },
            "documentation": "@return the result of computing the pairing check\n e(p1[0], p2[0]) *  .... * e(p1[n], p2[n]) == 1\n For example pairing([P1(), P1().negate()], [P2(), P2()]) should\n return true.",
            "id": 1843,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1687,
                  "name": "p1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1843,
                  "src": "17141:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                    "typeString": "struct Pairing.G1Point[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1685,
                      "name": "G1Point",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1449,
                      "src": "17141:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                        "typeString": "struct Pairing.G1Point"
                      }
                    },
                    "id": 1686,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "17141:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                      "typeString": "struct Pairing.G1Point[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1690,
                  "name": "p2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1843,
                  "src": "17155:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                    "typeString": "struct Pairing.G2Point[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1688,
                      "name": "G2Point",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1458,
                      "src": "17155:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                        "typeString": "struct Pairing.G2Point"
                      }
                    },
                    "id": 1689,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "17155:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                      "typeString": "struct Pairing.G2Point[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17140:28:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1693,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1843,
                  "src": "17187:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17187:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17186:6:0"
            },
            "scope": 2081,
            "src": "17124:899:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1905,
              "nodeType": "Block",
              "src": "18184:215:0",
              "statements": [
                {
                  "assignments": [
                    1859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1859,
                      "name": "p1",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "18194:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1857,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18194:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1858,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18194:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1865,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18230:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18216:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1860,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18220:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1861,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18220:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      }
                    },
                    "id": 1864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18216:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18194:38:0"
                },
                {
                  "assignments": [
                    1869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1869,
                      "name": "p2",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "18242:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G2Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1867,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18242:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1868,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18242:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1875,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18278:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18264:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1870,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18268:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1871,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18268:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      }
                    },
                    "id": 1874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18264:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory",
                      "typeString": "struct Pairing.G2Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18242:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1876,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1859,
                        "src": "18290:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1878,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18293:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18290:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1879,
                      "name": "a1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1845,
                      "src": "18298:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18290:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1881,
                  "nodeType": "ExpressionStatement",
                  "src": "18290:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1882,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1859,
                        "src": "18310:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1884,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18313:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18310:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1885,
                      "name": "b1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1849,
                      "src": "18318:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18310:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1887,
                  "nodeType": "ExpressionStatement",
                  "src": "18310:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1888,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1869,
                        "src": "18330:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1890,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18333:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18330:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1891,
                      "name": "a2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1847,
                      "src": "18338:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18330:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1893,
                  "nodeType": "ExpressionStatement",
                  "src": "18330:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1894,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1869,
                        "src": "18350:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1896,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18353:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18350:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1897,
                      "name": "b2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1851,
                      "src": "18358:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18350:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1899,
                  "nodeType": "ExpressionStatement",
                  "src": "18350:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1901,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1859,
                        "src": "18385:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1902,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1869,
                        "src": "18389:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      ],
                      "id": 1900,
                      "name": "pairing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1843,
                      "src": "18377:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) returns (bool)"
                      }
                    },
                    "id": 1903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18377:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1855,
                  "id": 1904,
                  "nodeType": "Return",
                  "src": "18370:22:0"
                }
              ]
            },
            "documentation": "Convenience method for a pairing check for two pairs.",
            "id": 1906,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairingProd2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1845,
                  "name": "a1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18112:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1844,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18112:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1847,
                  "name": "a2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18124:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1846,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18124:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1849,
                  "name": "b1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18136:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1848,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18136:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1851,
                  "name": "b2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18148:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1850,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18148:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18111:48:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1855,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1854,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18178:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1853,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18178:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18177:6:0"
            },
            "scope": 2081,
            "src": "18090:309:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1984,
              "nodeType": "Block",
              "src": "18628:255:0",
              "statements": [
                {
                  "assignments": [
                    1926
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1926,
                      "name": "p1",
                      "nodeType": "VariableDeclaration",
                      "scope": 1985,
                      "src": "18638:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1924,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18638:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1925,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18638:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1932,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 1930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18674:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 1929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18660:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1927,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18664:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1928,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18664:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      }
                    },
                    "id": 1931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18660:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18638:38:0"
                },
                {
                  "assignments": [
                    1936
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1936,
                      "name": "p2",
                      "nodeType": "VariableDeclaration",
                      "scope": 1985,
                      "src": "18686:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G2Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1934,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18686:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1935,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18686:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1942,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 1940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18722:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 1939,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18708:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1937,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18712:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1938,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18712:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      }
                    },
                    "id": 1941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18708:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory",
                      "typeString": "struct Pairing.G2Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18686:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1943,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18734:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1945,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18737:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18734:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1946,
                      "name": "a1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1908,
                      "src": "18742:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18734:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1948,
                  "nodeType": "ExpressionStatement",
                  "src": "18734:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1953,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1949,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18754:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1951,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18757:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18754:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1952,
                      "name": "b1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1912,
                      "src": "18762:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18754:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1954,
                  "nodeType": "ExpressionStatement",
                  "src": "18754:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1955,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18774:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1957,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18777:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18774:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1958,
                      "name": "c1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1916,
                      "src": "18782:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18774:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1960,
                  "nodeType": "ExpressionStatement",
                  "src": "18774:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1961,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18794:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1963,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18797:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18794:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1964,
                      "name": "a2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1910,
                      "src": "18802:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18794:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1966,
                  "nodeType": "ExpressionStatement",
                  "src": "18794:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1967,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18814:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1969,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18817:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18814:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1970,
                      "name": "b2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1914,
                      "src": "18822:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18814:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1972,
                  "nodeType": "ExpressionStatement",
                  "src": "18814:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1973,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18834:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1975,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18837:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18834:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1976,
                      "name": "c2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1918,
                      "src": "18842:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18834:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1978,
                  "nodeType": "ExpressionStatement",
                  "src": "18834:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1980,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18869:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1981,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18873:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      ],
                      "id": 1979,
                      "name": "pairing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1843,
                      "src": "18861:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) returns (bool)"
                      }
                    },
                    "id": 1982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18861:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1922,
                  "id": 1983,
                  "nodeType": "Return",
                  "src": "18854:22:0"
                }
              ]
            },
            "documentation": "Convenience method for a pairing check for three pairs.",
            "id": 1985,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairingProd3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1908,
                  "name": "a1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18503:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1907,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18503:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1910,
                  "name": "a2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18515:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1909,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18515:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1912,
                  "name": "b1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18539:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1911,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18539:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1914,
                  "name": "b2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18551:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1913,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18551:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1916,
                  "name": "c1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18575:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1915,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18575:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1918,
                  "name": "c2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18587:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1917,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18587:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18489:114:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1921,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18622:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18622:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18621:6:0"
            },
            "scope": 2081,
            "src": "18468:415:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2079,
              "nodeType": "Block",
              "src": "19147:295:0",
              "statements": [
                {
                  "assignments": [
                    2009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2009,
                      "name": "p1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2080,
                      "src": "19157:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2007,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "19157:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 2008,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19157:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2015,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 2013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19193:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 2012,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19179:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2010,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "19183:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 2011,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19183:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      }
                    },
                    "id": 2014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19179:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19157:38:0"
                },
                {
                  "assignments": [
                    2019
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2019,
                      "name": "p2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2080,
                      "src": "19205:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G2Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2017,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "19205:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 2018,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19205:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2025,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 2023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19241:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 2022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19227:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2020,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "19231:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 2021,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19231:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      }
                    },
                    "id": 2024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19227:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory",
                      "typeString": "struct Pairing.G2Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19205:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2026,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19253:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2028,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19256:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19253:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "a1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1987,
                      "src": "19261:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19253:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2031,
                  "nodeType": "ExpressionStatement",
                  "src": "19253:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2032,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19273:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2034,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19276:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19273:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2035,
                      "name": "b1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1991,
                      "src": "19281:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19273:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "19273:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2038,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19293:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2040,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19296:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19293:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2041,
                      "name": "c1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1995,
                      "src": "19301:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19293:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2043,
                  "nodeType": "ExpressionStatement",
                  "src": "19293:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2044,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19313:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2046,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19316:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19313:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2047,
                      "name": "d1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1999,
                      "src": "19321:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19313:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2049,
                  "nodeType": "ExpressionStatement",
                  "src": "19313:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2050,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19333:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2052,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19336:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19333:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2053,
                      "name": "a2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1989,
                      "src": "19341:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19333:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2055,
                  "nodeType": "ExpressionStatement",
                  "src": "19333:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2056,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19353:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2058,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19356:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19353:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2059,
                      "name": "b2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1993,
                      "src": "19361:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19353:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2061,
                  "nodeType": "ExpressionStatement",
                  "src": "19353:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2062,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19373:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2064,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19376:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19373:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2065,
                      "name": "c2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1997,
                      "src": "19381:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19373:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2067,
                  "nodeType": "ExpressionStatement",
                  "src": "19373:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2068,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19393:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2070,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19396:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19393:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2071,
                      "name": "d2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2001,
                      "src": "19401:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19393:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2073,
                  "nodeType": "ExpressionStatement",
                  "src": "19393:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2075,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19428:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2076,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19432:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      ],
                      "id": 2074,
                      "name": "pairing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1843,
                      "src": "19420:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) returns (bool)"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19420:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2005,
                  "id": 2078,
                  "nodeType": "Return",
                  "src": "19413:22:0"
                }
              ]
            },
            "documentation": "Convenience method for a pairing check for four pairs.",
            "id": 2080,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairingProd4",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1987,
                  "name": "a1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "18986:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1986,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18986:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1989,
                  "name": "a2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "18998:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1988,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18998:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1991,
                  "name": "b1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19022:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1990,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19022:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1993,
                  "name": "b2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19034:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1992,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "19034:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1995,
                  "name": "c1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19058:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1994,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19058:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1997,
                  "name": "c2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19070:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1996,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "19070:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1999,
                  "name": "d1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19094:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1998,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19094:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2001,
                  "name": "d2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19106:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2000,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "19106:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18972:150:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2004,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19141:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2003,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19141:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19140:6:0"
            },
            "scope": 2081,
            "src": "18951:491:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2704,
        "src": "14334:5110:0"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2703,
        "linearizedBaseContracts": [
          2703
        ],
        "name": "Verifier",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2083,
            "libraryName": {
              "contractScope": null,
              "id": 2082,
              "name": "Pairing",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2081,
              "src": "19475:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Pairing_$2081",
                "typeString": "library Pairing"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "19469:20:0",
            "typeName": null
          },
          {
            "canonicalName": "Verifier.VerifyingKey",
            "id": 2101,
            "members": [
              {
                "constant": false,
                "id": 2085,
                "name": "A",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19524:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2084,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19524:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2087,
                "name": "B",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19551:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2086,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19551:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2089,
                "name": "C",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19578:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2088,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19578:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2091,
                "name": "gamma",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19605:21:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2090,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19605:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2093,
                "name": "gammaBeta1",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19636:26:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2092,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19636:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2095,
                "name": "gammaBeta2",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19672:26:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2094,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19672:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2097,
                "name": "Z",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19708:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2096,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19708:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2100,
                "name": "IC",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19735:20:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                  "typeString": "struct Pairing.G1Point[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 2098,
                    "name": "Pairing.G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19735:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "id": 2099,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "19735:17:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                    "typeString": "struct Pairing.G1Point[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "VerifyingKey",
            "nodeType": "StructDefinition",
            "scope": 2703,
            "src": "19494:268:0",
            "visibility": "public"
          },
          {
            "canonicalName": "Verifier.Proof",
            "id": 2118,
            "members": [
              {
                "constant": false,
                "id": 2103,
                "name": "A",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19790:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2102,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19790:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2105,
                "name": "A_p",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19817:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2104,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19817:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2107,
                "name": "B",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19846:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2106,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19846:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2109,
                "name": "B_p",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19873:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2108,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19873:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2111,
                "name": "C",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19902:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2110,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19902:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2113,
                "name": "C_p",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19929:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2112,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19929:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2115,
                "name": "K",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19958:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2114,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19958:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2117,
                "name": "H",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19985:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2116,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19985:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proof",
            "nodeType": "StructDefinition",
            "scope": 2703,
            "src": "19767:242:0",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2271,
              "nodeType": "Block",
              "src": "20078:2623:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2123,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20088:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2125,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "A",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2085,
                      "src": "20088:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307831363733636165323464653132383333313166363035656438346465306263313464373935383236303332343435363763353838336532643637363430636132",
                              "id": 2128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20112:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10155470335193043899967449356054645331154805989922742064428468199205739170978_by_1",
                                "typeString": "int_const 1015...(69 digits omitted)...0978"
                              },
                              "value": "0x1673cae24de1283311f605ed84de0bc14d79582603244567c5883e2d67640ca2"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832333035326237656262363166613837303365656137613335626638393837303835653137343332366463383139383864393736623737313330356234616465",
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20180:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_15840084127518112179489186478509732000818622869921784358890313692544086264542_by_1",
                                "typeString": "int_const 1584...(69 digits omitted)...4542"
                              },
                              "value": "0x23052b7ebb61fa8703eea7a35bf8987085e174326dc81988d976b771305b4ade"
                            }
                          ],
                          "id": 2130,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20111:136:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307832373431646462626639353964383435613934393033663939396435643136396663383438343639303039343830613736623730646439636331363565633163",
                              "id": 2131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20250:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_17756576507670372237508798715174972532515462324644343507105218991645847317532_by_1",
                                "typeString": "int_const 1775...(69 digits omitted)...7532"
                              },
                              "value": "0x2741ddbbf959d845a94903f999d5d169fc848469009480a76b70dd9cc165ec1c"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30783130383761623436333733653063643037353266626331666638333331656566366637333838366163663961663038616163326230666662666530303061",
                              "id": 2132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20318:64:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_29205906338736773201545267460801375327534990793537589728106946308639424522_by_1",
                                "typeString": "int_const 2920...(66 digits omitted)...4522"
                              },
                              "value": "0x1087ab46373e0cd0752fbc1ff8331eef6f73886acf9af08aac2b0ffbfe000a"
                            }
                          ],
                          "id": 2133,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20249:134:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2126,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20095:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "20095:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20095:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "20088:296:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2136,
                  "nodeType": "ExpressionStatement",
                  "src": "20088:296:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2137,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20394:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2139,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "B",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2087,
                      "src": "20394:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307832623637623662653531373264303330306635633132386263316134333366396532306666356461363833656265663236613336646231666666316537653439",
                          "id": 2142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20417:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_19632698985555137977058386024346696503511293280354378848585657753095104265801_by_1",
                            "typeString": "int_const 1963...(69 digits omitted)...5801"
                          },
                          "value": "0x2b67b6be5172d0300f5c128bc1a433f9e20ff5da683ebef26a36db1fff1e7e49"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307832393639316333346562663163633730326535646563303235373033653437663066353130636131363566363837336562646230636566386130623732353865",
                          "id": 2143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20485:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18730540409378447816754731686510907418175650667496088392338522709404662834574_by_1",
                            "typeString": "int_const 1873...(69 digits omitted)...4574"
                          },
                          "value": "0x29691c34ebf1cc702e5dec025703e47f0f510ca165f6873ebdb0cef8a0b7258e"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_19632698985555137977058386024346696503511293280354378848585657753095104265801_by_1",
                            "typeString": "int_const 1963...(69 digits omitted)...5801"
                          },
                          {
                            "typeIdentifier": "t_rational_18730540409378447816754731686510907418175650667496088392338522709404662834574_by_1",
                            "typeString": "int_const 1873...(69 digits omitted)...4574"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2140,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20401:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "20401:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20401:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "20394:158:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2146,
                  "nodeType": "ExpressionStatement",
                  "src": "20394:158:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2147,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20562:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "C",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2089,
                      "src": "20562:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078373037366639373634343633393865363234356463336232376265373631633237393832333637366438326564383661373533346166353831323432653665",
                              "id": 2152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20586:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3179328044892871887082819712665797410409566266315297415625243868252455841390_by_1",
                                "typeString": "int_const 3179...(68 digits omitted)...1390"
                              },
                              "value": "0x7076f976446398e6245dc3b27be761c279823676d82ed86a7534af581242e6e"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078346333653833393733623732383030346338636237316435653565356566333935636439346130653536353239386662353866396561313264366137376461",
                              "id": 2153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20653:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2155389326020525590927477244112210816984612177182921662073582496132004214746_by_1",
                                "typeString": "int_const 2155...(68 digits omitted)...4746"
                              },
                              "value": "0x4c3e83973b728004c8cb71d5e5e5ef395cd94a0e565298fb58f9ea12d6a77da"
                            }
                          ],
                          "id": 2154,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20585:134:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078366133653264643764383866616537633035626538316438613138653039343131633532303266333363623937313962366566373662393966366462333032",
                              "id": 2155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20722:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3003438929101449886426141509168464409874695740240337038988854891933418238722_by_1",
                                "typeString": "int_const 3003...(68 digits omitted)...8722"
                              },
                              "value": "0x6a3e2dd7d88fae7c05be81d8a18e09411c5202f33cb9719b6ef76b99f6db302"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832306632616330613034316162343362653439353038396365646663303739373239323064633966393232303835333730313365613165636336313963646262",
                              "id": 2156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20789:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_14902775514744242655281971758385015395265960769856031042736821363002327027131_by_1",
                                "typeString": "int_const 1490...(69 digits omitted)...7131"
                              },
                              "value": "0x20f2ac0a041ab43be495089cedfc07972920dc9f92208537013ea1ecc619cdbb"
                            }
                          ],
                          "id": 2157,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20721:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2150,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20569:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "20569:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20569:288:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "20562:295:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2160,
                  "nodeType": "ExpressionStatement",
                  "src": "20562:295:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2161,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20867:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2163,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "gamma",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2091,
                      "src": "20867:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078333861383665643939366336656366303865616631393461643862376438333032333133353763636661313533343363323063326134326336336235316564",
                              "id": 2166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20895:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1601694680364433563952127533548097685106189379282300651557634075520040391149_by_1",
                                "typeString": "int_const 1601...(68 digits omitted)...1149"
                              },
                              "value": "0x38a86ed996c6ecf08eaf194ad8b7d830231357ccfa15343c20c2a42c63b51ed"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307831386534303665666434373265383631663337366536386361646165383632626531343432613136643332346230643132333532663461613332663564363831",
                              "id": 2167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20962:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_11258397373046675278583052655416299063128020299552373016068127609470873622145_by_1",
                                "typeString": "int_const 1125...(69 digits omitted)...2145"
                              },
                              "value": "0x18e406efd472e861f376e68cadae862be1442a16d324b0d12352f4aa32f5d681"
                            }
                          ],
                          "id": 2168,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20894:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078663736356630653738353566636362636238643738333963656261333134373034326161616162306230326438326430336630303137363931616335303334",
                              "id": 2169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21032:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6993836738407891819859294131779571192395854438452877608488246875128498769972_by_1",
                                "typeString": "int_const 6993...(68 digits omitted)...9972"
                              },
                              "value": "0xf765f0e7855fccbcb8d7839ceba3147042aaaab0b02d82d03f0017691ac5034"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832633365393437646235343332366462373038663264353663653535356266653431383261396634636461343035343138643261643232626338383964313938",
                              "id": 2170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21099:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20012334703221788748565830706995734860809865671795226051363148881286337778072_by_1",
                                "typeString": "int_const 2001...(69 digits omitted)...8072"
                              },
                              "value": "0x2c3e947db54326db708f2d56ce555bfe4182a9f4cda405418d2ad22bc889d198"
                            }
                          ],
                          "id": 2171,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21031:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2164,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20878:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "20878:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20878:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "20867:300:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2174,
                  "nodeType": "ExpressionStatement",
                  "src": "20867:300:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2175,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21177:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2177,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "gammaBeta1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2093,
                      "src": "21177:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307832393133616265333165303430366232366465316434643366316134633331353436313463373131323238666430623734356166333334356237383239326466",
                          "id": 2180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21209:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18579583207838930871431971782913971855717525480027816921329570516371576623839_by_1",
                            "typeString": "int_const 1857...(69 digits omitted)...3839"
                          },
                          "value": "0x2913abe31e0406b26de1d4d3f1a4c3154614c711228fd0b745af3345b78292df"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307831363964353235353535623838363663373365343666663133623432363732643435346230613031393162636233646337656336323939376133386662326435",
                          "id": 2181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21277:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10228845901825424429923387641439657153504134152474373128073332384677699236565_by_1",
                            "typeString": "int_const 1022...(69 digits omitted)...6565"
                          },
                          "value": "0x169d525555b8866c73e46ff13b42672d454b0a0191bcb3dc7ec62997a38fb2d5"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_18579583207838930871431971782913971855717525480027816921329570516371576623839_by_1",
                            "typeString": "int_const 1857...(69 digits omitted)...3839"
                          },
                          {
                            "typeIdentifier": "t_rational_10228845901825424429923387641439657153504134152474373128073332384677699236565_by_1",
                            "typeString": "int_const 1022...(69 digits omitted)...6565"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2178,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "21193:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "21193:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21193:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "21177:167:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2184,
                  "nodeType": "ExpressionStatement",
                  "src": "21177:167:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2185,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21354:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2187,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "gammaBeta2",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2095,
                      "src": "21354:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078616561633863633166323932333935366662643839666334646261373536346531313864656134653833333263663033633539313364626262323933613330",
                              "id": 2190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21387:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4937956551370888672641127377843757018661713293527179611805391198392855116336_by_1",
                                "typeString": "int_const 4937...(68 digits omitted)...6336"
                              },
                              "value": "0xaeac8cc1f2923956fbd89fc4dba7564e118dea4e8332cf03c5913dbbb293a30"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078383136663638336464313837646266363033363031353364386261353062396430333436343562393864366137643661323335343265333835316237613037",
                              "id": 2191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21454:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3659074808729670992299063026899000140507854647659546133829445564595028326919_by_1",
                                "typeString": "int_const 3659...(68 digits omitted)...6919"
                              },
                              "value": "0x816f683dd187dbf60360153d8ba50b9d034645b98d6a7d6a23542e3851b7a07"
                            }
                          ],
                          "id": 2192,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21386:134:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307832636364663636326261323430393739343066363730656538386536626330356162353462376662633138323933646336653233356438373166303765626630",
                              "id": 2193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21523:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20265669477222284750377363561804518071631770952828813935558749963100831083504_by_1",
                                "typeString": "int_const 2026...(69 digits omitted)...3504"
                              },
                              "value": "0x2ccdf662ba24097940f670ee88e6bc05ab54b7fbc18293dc6e235d871f07ebf0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832623139316638633663306431346562636263316535346337643163653362356330623230636365313939363035613866626562643665326436353536636465",
                              "id": 2194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21591:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_19493841405608307225750883170252584959851876729933783019143171216052021718238_by_1",
                                "typeString": "int_const 1949...(69 digits omitted)...8238"
                              },
                              "value": "0x2b191f8c6c0d14ebcbc1e54c7d1ce3b5c0b20cce199605a8fbebd6e2d6556cde"
                            }
                          ],
                          "id": 2195,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21522:136:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2188,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "21370:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "21370:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2196,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21370:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "21354:305:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2198,
                  "nodeType": "ExpressionStatement",
                  "src": "21354:305:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2199,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21669:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2201,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "Z",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2097,
                      "src": "21669:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307831376264633163323532396463386230363866306464333964393533613930373430623035666362323139313538623335633066316538623633663866393732",
                              "id": 2204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21693:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10738466888633342042561240641368616844171219486666594497776829006530756540786_by_1",
                                "typeString": "int_const 1073...(69 digits omitted)...0786"
                              },
                              "value": "0x17bdc1c2529dc8b068f0dd39d953a90740b05fcb219158b35c0f1e8b63f8f972"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078343561343661643530386534643537663764336333306665306562393162343563373262316237623165343239343733656337653332393563626131623834",
                              "id": 2205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21761:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1968755424961691931365040141169456574909179851585597795510588926947151715204_by_1",
                                "typeString": "int_const 1968...(68 digits omitted)...5204"
                              },
                              "value": "0x45a46ad508e4d57f7d3c30fe0eb91b45c72b1b7b1e429473ec7e3295cba1b84"
                            }
                          ],
                          "id": 2206,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21692:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307831653666393437363938366532366261633561333263373931643331383837663634633732636530626339376538653933346166623432363536303061306337",
                              "id": 2207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21830:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_13766530137474205983979191993154029249458966706875751186863639683325960954055_by_1",
                                "typeString": "int_const 1376...(69 digits omitted)...4055"
                              },
                              "value": "0x1e6f9476986e26bac5a32c791d31887f64c72ce0bc97e8e934afb4265600a0c7"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078613761393631363863393939346532363039633036343937396639393362663430353731313837363864353931353134363866633236333639643031643133",
                              "id": 2208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21898:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4739719697613372664564536724363701019563625358524678842867070879409378434323_by_1",
                                "typeString": "int_const 4739...(68 digits omitted)...4323"
                              },
                              "value": "0xa7a96168c9994e2609c064979f993bf4057118768d59151468fc26369d01d13"
                            }
                          ],
                          "id": 2209,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21829:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2202,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "21676:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "21676:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21676:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "21669:296:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2212,
                  "nodeType": "ExpressionStatement",
                  "src": "21669:296:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2213,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21975:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2215,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "IC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2100,
                      "src": "21975:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                        "typeString": "struct Pairing.G1Point memory[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 2219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22005:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          }
                        ],
                        "id": 2218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "21983:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 2216,
                            "name": "Pairing.G1Point",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1449,
                            "src": "21987:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                              "typeString": "struct Pairing.G1Point"
                            }
                          },
                          "id": 2217,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21987:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                            "typeString": "struct Pairing.G1Point[]"
                          }
                        }
                      },
                      "id": 2220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21983:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                        "typeString": "struct Pairing.G1Point memory[] memory"
                      }
                    },
                    "src": "21975:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "id": 2222,
                  "nodeType": "ExpressionStatement",
                  "src": "21975:32:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2223,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22017:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2226,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22017:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2227,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22023:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22017:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "3078343566323534386138306637316663386633633837393964316236316336663238373964666537316663363764623166376135306361313331333530623833",
                          "id": 2230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22044:65:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1977359188916822162258258066659292590665902751695311268234202332400079670147_by_1",
                            "typeString": "int_const 1977...(68 digits omitted)...0147"
                          },
                          "value": "0x45f2548a80f71fc8f3c8799d1b61c6f2879dfe71fc67db1f7a50ca131350b83"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307832323262623136326636373037303938363636336561353263313535663233336231303036383733663730643737663366333963666363363530343962373466",
                          "id": 2231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22111:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_15455835552747761853179264260301127686028872001745730928270167858515666384719_by_1",
                            "typeString": "int_const 1545...(69 digits omitted)...4719"
                          },
                          "value": "0x222bb162f67070986663ea52c155f233b1006873f70d77f3f39cfcc65049b74f"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1977359188916822162258258066659292590665902751695311268234202332400079670147_by_1",
                            "typeString": "int_const 1977...(68 digits omitted)...0147"
                          },
                          {
                            "typeIdentifier": "t_rational_15455835552747761853179264260301127686028872001745730928270167858515666384719_by_1",
                            "typeString": "int_const 1545...(69 digits omitted)...4719"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2228,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22028:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22028:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22028:150:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22017:161:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2234,
                  "nodeType": "ExpressionStatement",
                  "src": "22017:161:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2235,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22188:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2238,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22188:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22194:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22188:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307831383435363964636266653261666335383034313139633935663231623762353264646438616639393439343334356631333837613138633665376565323335",
                          "id": 2242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22215:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10978151448230682792114107122126562463954986294976692388317631577052007031349_by_1",
                            "typeString": "int_const 1097...(69 digits omitted)...1349"
                          },
                          "value": "0x184569dcbfe2afc5804119c95f21b7b52ddd8af99494345f1387a18c6e7ee235"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307831356237353631336361373131643563363934653764356266666436356534623330646266393865326565366461333861316632613539306136356161613637",
                          "id": 2243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22283:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_9822496916847464754573055571196298264754486762992026082420083290122636405351_by_1",
                            "typeString": "int_const 9822...(68 digits omitted)...5351"
                          },
                          "value": "0x15b75613ca711d5c694e7d5bffd65e4b30dbf98e2ee6da38a1f2a590a65aaa67"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_10978151448230682792114107122126562463954986294976692388317631577052007031349_by_1",
                            "typeString": "int_const 1097...(69 digits omitted)...1349"
                          },
                          {
                            "typeIdentifier": "t_rational_9822496916847464754573055571196298264754486762992026082420083290122636405351_by_1",
                            "typeString": "int_const 9822...(68 digits omitted)...5351"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2240,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22199:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22199:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22199:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22188:162:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2246,
                  "nodeType": "ExpressionStatement",
                  "src": "22188:162:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2247,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22360:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2250,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22360:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2251,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22366:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22360:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307831613035303832636137316361343337306563376531313266333666646563656632656231356537336261396138323538363430663530653734376235333961",
                          "id": 2254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22387:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_11769024716296180822485371261998766457484876248055919831496543686113128829850_by_1",
                            "typeString": "int_const 1176...(69 digits omitted)...9850"
                          },
                          "value": "0x1a05082ca71ca4370ec7e112f36fdecef2eb15e73ba9a8258640f50e747b539a"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307832383765363465623938373239636263313466303239653236343361373762633735666264393839643639323961366663326134613262303438303839336538",
                          "id": 2255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22455:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18315833199769494873687336197482622644348730654307476799148074697163243295720_by_1",
                            "typeString": "int_const 1831...(69 digits omitted)...5720"
                          },
                          "value": "0x287e64eb98729cbc14f029e2643a77bc75fbd989d6929a6fc2a4a2b0480893e8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_11769024716296180822485371261998766457484876248055919831496543686113128829850_by_1",
                            "typeString": "int_const 1176...(69 digits omitted)...9850"
                          },
                          {
                            "typeIdentifier": "t_rational_18315833199769494873687336197482622644348730654307476799148074697163243295720_by_1",
                            "typeString": "int_const 1831...(69 digits omitted)...5720"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2252,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22371:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22371:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22371:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22360:162:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2258,
                  "nodeType": "ExpressionStatement",
                  "src": "22360:162:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2259,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22532:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2262,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22532:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2263,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22538:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22532:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307831646133653164636134303162643639323033626132323463303430336366613735393065333630633831366433656231363135313835616562363963656533",
                          "id": 2266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22559:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_13406627521861828139500511329019306350057503823273844478021366042249487044323_by_1",
                            "typeString": "int_const 1340...(69 digits omitted)...4323"
                          },
                          "value": "0x1da3e1dca401bd69203ba224c0403cfa7590e360c816d3eb1615185aeb69cee3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307831393338336563326539653864346236316438303439313139373165383566343765373134383962383833313634623733313961336562313866633731633138",
                          "id": 2267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22627:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_11407197813345948711088428215974436686095004968534768815004261762014246280216_by_1",
                            "typeString": "int_const 1140...(69 digits omitted)...0216"
                          },
                          "value": "0x19383ec2e9e8d4b61d804911971e85f47e71489b883164b7319a3eb18fc71c18"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_13406627521861828139500511329019306350057503823273844478021366042249487044323_by_1",
                            "typeString": "int_const 1340...(69 digits omitted)...4323"
                          },
                          {
                            "typeIdentifier": "t_rational_11407197813345948711088428215974436686095004968534768815004261762014246280216_by_1",
                            "typeString": "int_const 1140...(69 digits omitted)...0216"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2264,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22543:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22543:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22543:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22532:162:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2270,
                  "nodeType": "ExpressionStatement",
                  "src": "22532:162:0"
                }
              ]
            },
            "documentation": null,
            "id": 2272,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "verifyingKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20035:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2121,
                  "name": "vk",
                  "nodeType": "VariableDeclaration",
                  "scope": 2272,
                  "src": "20061:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                    "typeString": "struct Verifier.VerifyingKey"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2120,
                    "name": "VerifyingKey",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2101,
                    "src": "20061:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VerifyingKey_$2101_storage_ptr",
                      "typeString": "struct Verifier.VerifyingKey"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20060:17:0"
            },
            "scope": 2703,
            "src": "20014:2687:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2473,
              "nodeType": "Block",
              "src": "22773:1176:0",
              "statements": [
                {
                  "assignments": [
                    2283
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2283,
                      "name": "vk",
                      "nodeType": "VariableDeclaration",
                      "scope": 2474,
                      "src": "22783:22:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                        "typeString": "struct Verifier.VerifyingKey"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2282,
                        "name": "VerifyingKey",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2101,
                        "src": "22783:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_storage_ptr",
                          "typeString": "struct Verifier.VerifyingKey"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2286,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2284,
                      "name": "verifyingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2272,
                      "src": "22808:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_VerifyingKey_$2101_memory_ptr_$",
                        "typeString": "function () pure returns (struct Verifier.VerifyingKey memory)"
                      }
                    },
                    "id": 2285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22808:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                      "typeString": "struct Verifier.VerifyingKey memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22783:39:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2288,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2275,
                              "src": "22840:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "22840:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22855:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "22840:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2292,
                              "name": "vk",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2283,
                              "src": "22860:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                "typeString": "struct Verifier.VerifyingKey memory"
                              }
                            },
                            "id": 2293,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "IC",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2100,
                            "src": "22860:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                              "typeString": "struct Pairing.G1Point memory[] memory"
                            }
                          },
                          "id": 2294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22860:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22840:32:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "22832:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22832:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2297,
                  "nodeType": "ExpressionStatement",
                  "src": "22832:41:0"
                },
                {
                  "assignments": [
                    2301
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2301,
                      "name": "vk_x",
                      "nodeType": "VariableDeclaration",
                      "scope": 2474,
                      "src": "22930:27:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2300,
                        "name": "Pairing.G1Point",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1449,
                        "src": "22930:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                          "typeString": "struct Pairing.G1Point"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2307,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22976:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22979:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2302,
                        "name": "Pairing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2081,
                        "src": "22960:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                          "typeString": "type(library Pairing)"
                        }
                      },
                      "id": 2303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "G1Point",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1449,
                      "src": "22960:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                        "typeString": "type(struct Pairing.G1Point storage pointer)"
                      }
                    },
                    "id": 2306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22960:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22930:51:0"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2336,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2319,
                        "name": "vk_x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2301,
                        "src": "23043:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2322,
                            "name": "vk_x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2301,
                            "src": "23067:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2325,
                                    "name": "vk",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2283,
                                    "src": "23092:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                      "typeString": "struct Verifier.VerifyingKey memory"
                                    }
                                  },
                                  "id": 2326,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "IC",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "23092:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                                    "typeString": "struct Pairing.G1Point memory[] memory"
                                  }
                                },
                                "id": 2330,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2329,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2327,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2309,
                                    "src": "23098:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23102:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "23098:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "23092:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                  "typeString": "struct Pairing.G1Point memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2331,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2275,
                                  "src": "23106:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2333,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2332,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2309,
                                  "src": "23112:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "23106:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                  "typeString": "struct Pairing.G1Point memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2323,
                                "name": "Pairing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2081,
                                "src": "23073:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                  "typeString": "type(library Pairing)"
                                }
                              },
                              "id": 2324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "scalar_mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1684,
                              "src": "23073:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_uint256_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                                "typeString": "function (struct Pairing.G1Point memory,uint256) returns (struct Pairing.G1Point memory)"
                              }
                            },
                            "id": 2334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23073:42:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            },
                            {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2320,
                            "name": "Pairing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2081,
                            "src": "23050:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                              "typeString": "type(library Pairing)"
                            }
                          },
                          "id": 2321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addition",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1575,
                          "src": "23050:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                            "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                          }
                        },
                        "id": 2335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23050:66:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "src": "23043:73:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "id": 2337,
                    "nodeType": "ExpressionStatement",
                    "src": "23043:73:0"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2312,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2309,
                      "src": "23008:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2313,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2275,
                        "src": "23012:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "23012:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23008:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2338,
                  "initializationExpression": {
                    "assignments": [
                      2309
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2309,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2474,
                        "src": "22996:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2308,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22996:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2311,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23005:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22996:10:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "23026:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2316,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2309,
                        "src": "23026:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2318,
                    "nodeType": "ExpressionStatement",
                    "src": "23026:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "22991:125:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2339,
                      "name": "vk_x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2301,
                      "src": "23126:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2342,
                          "name": "vk_x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2301,
                          "src": "23150:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2343,
                              "name": "vk",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2283,
                              "src": "23156:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                "typeString": "struct Verifier.VerifyingKey memory"
                              }
                            },
                            "id": 2344,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "IC",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2100,
                            "src": "23156:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                              "typeString": "struct Pairing.G1Point memory[] memory"
                            }
                          },
                          "id": 2346,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23162:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23156:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2340,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23133:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addition",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1575,
                        "src": "23133:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                        }
                      },
                      "id": 2347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23133:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "23126:39:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2349,
                  "nodeType": "ExpressionStatement",
                  "src": "23126:39:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23179:77:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2352,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23201:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2353,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "A",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2103,
                          "src": "23201:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2354,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23210:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2355,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "A",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2085,
                          "src": "23210:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2358,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23231:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2359,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "A_p",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2105,
                              "src": "23231:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2356,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23216:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23216:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23216:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2361,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23243:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23243:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23243:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2350,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23180:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1906,
                        "src": "23180:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23180:76:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2368,
                  "nodeType": "IfStatement",
                  "src": "23175:91:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2366,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23265:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2367,
                    "nodeType": "Return",
                    "src": "23258:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23280:77:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2371,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23302:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2372,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2087,
                          "src": "23302:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2373,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23308:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2374,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2107,
                          "src": "23308:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2377,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23332:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2378,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "B_p",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2109,
                              "src": "23332:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2375,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23317:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23317:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23317:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2380,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23344:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23344:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23344:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2369,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23281:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1906,
                        "src": "23281:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2383,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23281:76:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2387,
                  "nodeType": "IfStatement",
                  "src": "23276:91:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23366:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2386,
                    "nodeType": "Return",
                    "src": "23359:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23381:77:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2390,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23403:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2391,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "C",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2111,
                          "src": "23403:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2392,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23412:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2393,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "C",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2089,
                          "src": "23412:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2396,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23433:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2397,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "C_p",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2113,
                              "src": "23433:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2394,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23418:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23418:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23418:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2399,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23445:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23445:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23445:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2388,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23382:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1906,
                        "src": "23382:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23382:76:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2406,
                  "nodeType": "IfStatement",
                  "src": "23377:91:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 2404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23467:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2405,
                    "nodeType": "Return",
                    "src": "23460:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23482:217:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2409,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23517:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2410,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "K",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2115,
                          "src": "23517:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2411,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23526:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2412,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "gamma",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2091,
                          "src": "23526:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2417,
                                  "name": "vk_x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2301,
                                  "src": "23580:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2420,
                                        "name": "proof",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2277,
                                        "src": "23603:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                          "typeString": "struct Verifier.Proof memory"
                                        }
                                      },
                                      "id": 2421,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "A",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2103,
                                      "src": "23603:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2422,
                                        "name": "proof",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2277,
                                        "src": "23612:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                          "typeString": "struct Verifier.Proof memory"
                                        }
                                      },
                                      "id": 2423,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "C",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2111,
                                      "src": "23612:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      },
                                      {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2418,
                                      "name": "Pairing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2081,
                                      "src": "23586:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                        "typeString": "type(library Pairing)"
                                      }
                                    },
                                    "id": 2419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1575,
                                    "src": "23586:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                                      "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                                    }
                                  },
                                  "id": 2424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23586:34:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2415,
                                  "name": "Pairing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2081,
                                  "src": "23563:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                    "typeString": "type(library Pairing)"
                                  }
                                },
                                "id": 2416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "addition",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1575,
                                "src": "23563:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                                  "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                                }
                              },
                              "id": 2425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23563:58:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2413,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23548:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23548:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23548:74:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2427,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23624:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2428,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "gammaBeta2",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2095,
                          "src": "23624:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2431,
                                "name": "vk",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2283,
                                "src": "23666:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                  "typeString": "struct Verifier.VerifyingKey memory"
                                }
                              },
                              "id": 2432,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gammaBeta1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2093,
                              "src": "23666:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2429,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23651:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23651:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23651:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2434,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23682:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2435,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2107,
                          "src": "23682:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2407,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23483:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd3",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1985,
                        "src": "23483:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2436,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23483:216:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2440,
                  "nodeType": "IfStatement",
                  "src": "23478:231:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "34",
                      "id": 2438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23708:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2439,
                    "nodeType": "Return",
                    "src": "23701:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23723:191:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2445,
                              "name": "vk_x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2301,
                              "src": "23779:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2446,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23785:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2447,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "A",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2103,
                              "src": "23785:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2443,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23762:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "addition",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1575,
                            "src": "23762:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23762:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2449,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23795:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2450,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2107,
                          "src": "23795:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2453,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23835:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2454,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "H",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2117,
                              "src": "23835:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2451,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23820:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23820:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23820:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2456,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23845:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2457,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "Z",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2097,
                          "src": "23845:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2460,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23882:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2461,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "C",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2111,
                              "src": "23882:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2458,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23867:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23867:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23867:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2463,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23892:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23892:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23892:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2441,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23724:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd3",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1985,
                        "src": "23724:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23724:190:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2470,
                  "nodeType": "IfStatement",
                  "src": "23719:205:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "35",
                      "id": 2468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23923:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5_by_1",
                        "typeString": "int_const 5"
                      },
                      "value": "5"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2469,
                    "nodeType": "Return",
                    "src": "23916:8:0"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "23941:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 2281,
                  "id": 2472,
                  "nodeType": "Return",
                  "src": "23934:8:0"
                }
              ]
            },
            "documentation": null,
            "id": 2474,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2275,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 2474,
                  "src": "22722:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2273,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "22722:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2274,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "22722:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2277,
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 2474,
                  "src": "22736:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                    "typeString": "struct Verifier.Proof"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2276,
                    "name": "Proof",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2118,
                    "src": "22736:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proof_$2118_storage_ptr",
                      "typeString": "struct Verifier.Proof"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22721:27:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2280,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2474,
                  "src": "22767:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2279,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22767:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22766:6:0"
            },
            "scope": 2703,
            "src": "22706:1243:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2478,
            "name": "Verified",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2476,
                  "indexed": false,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 2478,
                  "src": "23969:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2475,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23969:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23968:10:0"
            },
            "src": "23954:25:0"
          },
          {
            "body": {
              "id": 2701,
              "nodeType": "Block",
              "src": "24256:806:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2522,
                      "name": "proof",
                      "nodeType": "VariableDeclaration",
                      "scope": 2702,
                      "src": "24266:18:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                        "typeString": "struct Verifier.Proof"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2521,
                        "name": "Proof",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2118,
                        "src": "24266:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_storage_ptr",
                          "typeString": "struct Verifier.Proof"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2523,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24266:18:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2524,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24294:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2526,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "A",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2103,
                      "src": "24294:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2529,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2482,
                            "src": "24320:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2531,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24322:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24320:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2532,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2482,
                            "src": "24326:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2534,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24328:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24326:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2527,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24304:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24304:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24304:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24294:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2537,
                  "nodeType": "ExpressionStatement",
                  "src": "24294:37:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2538,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24341:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2540,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "A_p",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2105,
                      "src": "24341:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2543,
                            "name": "a_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2486,
                            "src": "24369:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2545,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24373:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24369:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2546,
                            "name": "a_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2486,
                            "src": "24377:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2548,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24381:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24377:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2541,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24353:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24353:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24353:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24341:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2551,
                  "nodeType": "ExpressionStatement",
                  "src": "24341:43:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2552,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24394:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2554,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "B",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2107,
                      "src": "24394:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2557,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24421:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2559,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24423:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24421:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2561,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24426:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24421:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2562,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24430:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2564,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24432:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24430:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2566,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24435:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24430:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2567,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24420:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2568,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24441:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2570,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2569,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24443:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24441:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2572,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24446:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24441:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2573,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24450:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2575,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24452:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24450:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2577,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24455:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24450:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2578,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24440:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2555,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24404:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "24404:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24404:55:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "24394:65:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2581,
                  "nodeType": "ExpressionStatement",
                  "src": "24394:65:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2582,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24469:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2584,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "B_p",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2109,
                      "src": "24469:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2587,
                            "name": "b_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2496,
                            "src": "24497:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2589,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24501:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24497:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2590,
                            "name": "b_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2496,
                            "src": "24505:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2592,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24509:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24505:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2585,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24481:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24481:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2593,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24481:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24469:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2595,
                  "nodeType": "ExpressionStatement",
                  "src": "24469:43:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2596,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24522:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2598,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "C",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2111,
                      "src": "24522:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2601,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2500,
                            "src": "24548:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2603,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24550:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24548:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2604,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2500,
                            "src": "24554:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2606,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24556:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24554:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2599,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24532:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24532:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24532:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24522:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2609,
                  "nodeType": "ExpressionStatement",
                  "src": "24522:37:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2610,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24569:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2612,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "C_p",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2113,
                      "src": "24569:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2615,
                            "name": "c_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "24597:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2617,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24601:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24597:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2618,
                            "name": "c_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "24605:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2620,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24609:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24605:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2613,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24581:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24581:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24581:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24569:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2623,
                  "nodeType": "ExpressionStatement",
                  "src": "24569:43:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2624,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24622:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2626,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "H",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2117,
                      "src": "24622:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2629,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2508,
                            "src": "24648:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2631,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24650:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24648:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2632,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2508,
                            "src": "24654:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2634,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24656:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24654:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2627,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24632:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24632:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24632:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24622:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2637,
                  "nodeType": "ExpressionStatement",
                  "src": "24622:37:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2638,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24669:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "K",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2115,
                      "src": "24669:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2643,
                            "name": "k",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2512,
                            "src": "24695:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2645,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24697:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24695:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2646,
                            "name": "k",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2512,
                            "src": "24701:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2648,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24703:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24701:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2641,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24679:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24679:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2649,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24679:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24669:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "24669:37:0"
                },
                {
                  "assignments": [
                    2655
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2655,
                      "name": "inputValues",
                      "nodeType": "VariableDeclaration",
                      "scope": 2702,
                      "src": "24716:25:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2653,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24716:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2654,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "24716:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2662,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2659,
                          "name": "input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2516,
                          "src": "24755:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                            "typeString": "uint256[3] memory"
                          }
                        },
                        "id": 2660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "24755:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "24744:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2656,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24748:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2657,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "24748:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 2661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24744:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24716:52:0"
                },
                {
                  "body": {
                    "id": 2682,
                    "nodeType": "Block",
                    "src": "24816:50:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2674,
                              "name": "inputValues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2655,
                              "src": "24830:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2676,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2675,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2664,
                              "src": "24842:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "24830:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2677,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2516,
                              "src": "24847:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 2679,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2678,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2664,
                              "src": "24853:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "24847:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24830:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2681,
                        "nodeType": "ExpressionStatement",
                        "src": "24830:25:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2667,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2664,
                      "src": "24794:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2668,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2516,
                        "src": "24798:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 2669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "24798:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24794:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2683,
                  "initializationExpression": {
                    "assignments": [
                      2664
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2664,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2702,
                        "src": "24782:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2663,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24782:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2666,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24791:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24782:10:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "24812:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2671,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2664,
                        "src": "24812:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2673,
                    "nodeType": "ExpressionStatement",
                    "src": "24812:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "24778:88:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2685,
                          "name": "inputValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2655,
                          "src": "24886:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2686,
                          "name": "proof",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2522,
                          "src": "24899:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                            "typeString": "struct Verifier.Proof memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                            "typeString": "struct Verifier.Proof memory"
                          }
                        ],
                        "id": 2684,
                        "name": "verify",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2474,
                        "src": "24879:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_Proof_$2118_memory_ptr_$returns$_t_uint256_$",
                          "typeString": "function (uint256[] memory,struct Verifier.Proof memory) returns (uint256)"
                        }
                      },
                      "id": 2687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24879:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24909:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "24879:31:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2699,
                    "nodeType": "Block",
                    "src": "25019:37:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25040:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 2520,
                        "id": 2698,
                        "nodeType": "Return",
                        "src": "25033:12:0"
                      }
                    ]
                  },
                  "id": 2700,
                  "nodeType": "IfStatement",
                  "src": "24875:181:0",
                  "trueBody": {
                    "id": 2696,
                    "nodeType": "Block",
                    "src": "24912:101:0",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e73616374696f6e207375636365737366756c6c792076657269666965642e",
                              "id": 2691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24940:36:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7e695694427cbfe2cb6d2c2298bb8b2c8bfa9b576b2daa046d20a615aa1f3668",
                                "typeString": "literal_string \"Transaction successfully verified.\""
                              },
                              "value": "Transaction successfully verified."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_7e695694427cbfe2cb6d2c2298bb8b2c8bfa9b576b2daa046d20a615aa1f3668",
                                "typeString": "literal_string \"Transaction successfully verified.\""
                              }
                            ],
                            "id": 2690,
                            "name": "Verified",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2478,
                            "src": "24931:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 2692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24931:46:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2693,
                        "nodeType": "EmitStatement",
                        "src": "24926:51:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24998:4:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2520,
                        "id": 2695,
                        "nodeType": "Return",
                        "src": "24991:11:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2702,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTx",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2482,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24015:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2479,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24015:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2481,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24020:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24015:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2486,
                  "name": "a_p",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24038:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2483,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24038:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2485,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24043:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24038:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2492,
                  "name": "b",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24063:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                    "typeString": "uint256[2][2]"
                  },
                  "typeName": {
                    "baseType": {
                      "baseType": {
                        "id": 2487,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "24063:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2489,
                      "length": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24068:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        },
                        "value": "2"
                      },
                      "nodeType": "ArrayTypeName",
                      "src": "24063:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                        "typeString": "uint256[2]"
                      }
                    },
                    "id": 2491,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24071:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24063:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr",
                      "typeString": "uint256[2][2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2496,
                  "name": "b_p",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24089:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2493,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24089:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2495,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24094:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24089:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2500,
                  "name": "c",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24114:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2497,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24114:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2499,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24119:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24114:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2504,
                  "name": "c_p",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24137:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2501,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24137:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2503,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2502,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24142:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24137:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2508,
                  "name": "h",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24162:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2505,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24162:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2507,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2506,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24167:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24162:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2512,
                  "name": "k",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24185:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2509,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24185:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2511,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24190:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24185:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2516,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24208:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                    "typeString": "uint256[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2513,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24208:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2515,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 2514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24213:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24208:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                      "typeString": "uint256[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24001:230:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2519,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24248:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2518,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24248:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24247:8:0"
            },
            "scope": 2703,
            "src": "23984:1078:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2704,
        "src": "19445:5619:0"
      }
    ],
    "src": "32:25033:0"
  },
  "legacyAST": {
    "absolutePath": "/home/aznagy/work/zokrates/zokrates-tools/contracts/verifier.sol",
    "exportedSymbols": {
      "BN256G2": [
        1443
      ],
      "Pairing": [
        2081
      ],
      "Verifier": [
        2703
      ]
    },
    "id": 2704,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:24:0"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": "@title Elliptic curve operations on twist points for alt_bn128\n@author Mustafa Al-Bassam (mus@musalbas.com)",
        "fullyImplemented": true,
        "id": 1443,
        "linearizedBaseContracts": [
          1443
        ],
        "name": "BN256G2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 4,
            "name": "FIELD_MODULUS",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "202:108:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "202:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307833303634346537326531333161303239623835303435623638313831353835643937383136613931363837316361386433633230386331366438376366643437",
              "id": 3,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "244:66:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_21888242871839275222246405745257275088696311157297823662689037894645226208583_by_1",
                "typeString": "int_const 2188...(69 digits omitted)...8583"
              },
              "value": "0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 7,
            "name": "TWISTBX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "316:102:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "316:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307832623134396434306365623861616165383162653138393931626530366163336235623463356535353964626566613333323637653664633234613133386535",
              "id": 6,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "352:66:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_19485874751759354771024239261021720505790618469301721065564631296452457478373_by_1",
                "typeString": "int_const 1948...(69 digits omitted)...8373"
              },
              "value": "0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 10,
            "name": "TWISTBY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "424:100:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "424:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783937313362303361663066656434636432636166616465656438666466346137346661303834653532643138353265346132626430363835633331356432",
              "id": 9,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "460:64:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_266929791119991161246907387137283842545076965332900288569378510910307636690_by_1",
                "typeString": "int_const 2669...(67 digits omitted)...6690"
              },
              "value": "0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 13,
            "name": "PTXX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "530:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "530:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 12,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "560:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 16,
            "name": "PTXY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "567:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "567:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 15,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "597:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 19,
            "name": "PTYX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "604:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "604:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 18,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "634:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 22,
            "name": "PTYY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "641:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 20,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "641:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "33",
              "id": 21,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "671:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 25,
            "name": "PTZX",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "678:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 23,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "678:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 24,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "708:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 28,
            "name": "PTZY",
            "nodeType": "VariableDeclaration",
            "scope": 1443,
            "src": "715:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 26,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "715:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "35",
              "id": 27,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "745:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5_by_1",
                "typeString": "int_const 5"
              },
              "value": "5"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 105,
              "nodeType": "Block",
              "src": "1506:452:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 57,
                            "name": "pt1xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1547:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 58,
                            "name": "pt1xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32,
                            "src": "1554:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 59,
                            "name": "pt1yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34,
                            "src": "1573:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 60,
                            "name": "pt1yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36,
                            "src": "1580:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 56,
                          "name": "_isOnCurve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 493,
                          "src": "1523:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool)"
                          }
                        },
                        "id": 61,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1523:72:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 55,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2707,
                      "src": "1516:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 62,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1516:80:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 63,
                  "nodeType": "ExpressionStatement",
                  "src": "1516:80:0"
                },
                {
                  "assignments": [
                    68
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 68,
                      "name": "pt3",
                      "nodeType": "VariableDeclaration",
                      "scope": 106,
                      "src": "1607:21:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                        "typeString": "uint256[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 66,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1607:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 67,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 65,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1615:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "1607:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                          "typeString": "uint256[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 83,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 70,
                        "name": "pt1xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30,
                        "src": "1664:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 71,
                        "name": "pt1xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32,
                        "src": "1671:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 72,
                        "name": "pt1yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34,
                        "src": "1690:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 73,
                        "name": "pt1yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 36,
                        "src": "1697:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 74,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1716:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 75,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1723:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 76,
                        "name": "pt2xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38,
                        "src": "1738:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 77,
                        "name": "pt2xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40,
                        "src": "1745:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 78,
                        "name": "pt2yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42,
                        "src": "1764:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 79,
                        "name": "pt2yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44,
                        "src": "1771:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 80,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1790:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 81,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1797:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 69,
                      "name": "_ECTwistAddJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1113,
                      "src": "1631:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$6_memory_ptr_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256[6] memory)"
                      }
                    },
                    "id": 82,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1631:177:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                      "typeString": "uint256[6] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1607:201:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 85,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1853:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 87,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 86,
                          "name": "PTXX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "1857:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1853:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 88,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1864:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 90,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 89,
                          "name": "PTXY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16,
                          "src": "1868:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1864:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 91,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1887:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 93,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 92,
                          "name": "PTYX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1891:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1887:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 94,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1898:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 96,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 95,
                          "name": "PTYY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22,
                          "src": "1902:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1898:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 97,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1921:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 99,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 98,
                          "name": "PTZX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "1925:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1921:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 100,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 68,
                          "src": "1932:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 102,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 101,
                          "name": "PTZY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "1936:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1932:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 84,
                      "name": "_fromJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 654,
                      "src": "1826:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1826:125:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 54,
                  "id": 104,
                  "nodeType": "Return",
                  "src": "1819:132:0"
                }
              ]
            },
            "documentation": "@notice Add two twist points\n@param pt1xx Coefficient 1 of x on point 1\n@param pt1xy Coefficient 2 of x on point 1\n@param pt1yx Coefficient 1 of y on point 1\n@param pt1yy Coefficient 2 of y on point 1\n@param pt2xx Coefficient 1 of x on point 2\n@param pt2xy Coefficient 2 of x on point 2\n@param pt2yx Coefficient 1 of y on point 2\n@param pt2yy Coefficient 2 of y on point 2\n@return (pt3xx, pt3xy, pt3yx, pt3yy)",
            "id": 106,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ECTwistAdd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 45,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1278:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1278:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1293:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1293:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1316:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1316:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 36,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1331:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 35,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1331:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 38,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1354:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 37,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1354:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1369:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 39,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1369:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1392:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1392:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1407:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 43,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1407:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1268:158:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 54,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 47,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1457:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 46,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1457:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 49,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1466:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 48,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1466:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 51,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1483:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 50,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1483:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 53,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 106,
                  "src": "1492:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 52,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1447:58:0"
            },
            "scope": 1443,
            "src": "1249:709:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 172,
              "nodeType": "Block",
              "src": "2472:393:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 129,
                            "name": "pt1xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 110,
                            "src": "2513:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 130,
                            "name": "pt1xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 112,
                            "src": "2520:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 131,
                            "name": "pt1yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 114,
                            "src": "2539:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 132,
                            "name": "pt1yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 116,
                            "src": "2546:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 128,
                          "name": "_isOnCurve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 493,
                          "src": "2489:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool)"
                          }
                        },
                        "id": 133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2489:72:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 127,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2707,
                      "src": "2482:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 134,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2482:80:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 135,
                  "nodeType": "ExpressionStatement",
                  "src": "2482:80:0"
                },
                {
                  "assignments": [
                    140
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 140,
                      "name": "pt2",
                      "nodeType": "VariableDeclaration",
                      "scope": 173,
                      "src": "2573:21:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                        "typeString": "uint256[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 138,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2573:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 139,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2581:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "2573:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                          "typeString": "uint256[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 150,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 142,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 108,
                        "src": "2630:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 143,
                        "name": "pt1xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 110,
                        "src": "2645:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 144,
                        "name": "pt1xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 112,
                        "src": "2652:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 145,
                        "name": "pt1yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 114,
                        "src": "2671:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 146,
                        "name": "pt1yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 116,
                        "src": "2678:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2697:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2704:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 141,
                      "name": "_ECTwistMulJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1442,
                      "src": "2597:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$6_memory_ptr_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256[6] memory)"
                      }
                    },
                    "id": 149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2597:118:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                      "typeString": "uint256[6] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2573:142:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 152,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2760:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 154,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 153,
                          "name": "PTXX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "2764:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2760:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 155,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2771:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 157,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 156,
                          "name": "PTXY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16,
                          "src": "2775:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2771:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 158,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2794:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 160,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 159,
                          "name": "PTYX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "2798:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2794:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 161,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2805:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 163,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 162,
                          "name": "PTYY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22,
                          "src": "2809:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2805:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 164,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2828:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 166,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 165,
                          "name": "PTZX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "2832:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2828:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 167,
                          "name": "pt2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 140,
                          "src": "2839:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 169,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 168,
                          "name": "PTZY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "2843:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2839:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 151,
                      "name": "_fromJacobian",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 654,
                      "src": "2733:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2733:125:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 126,
                  "id": 171,
                  "nodeType": "Return",
                  "src": "2726:132:0"
                }
              ]
            },
            "documentation": "@notice Multiply a twist point by a scalar\n@param s     Scalar to multiply by\n@param pt1xx Coefficient 1 of x\n@param pt1xy Coefficient 2 of x\n@param pt1yx Coefficient 1 of y\n@param pt1yy Coefficient 2 of y\n@return (pt2xx, pt2xy, pt2yx, pt2yy)",
            "id": 173,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ECTwistMul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 108,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2301:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2301:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 110,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2320:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 109,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2320:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 112,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2335:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2335:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 114,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2358:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2358:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 116,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2373:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2291:101:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 119,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2423:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2423:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 121,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2432:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 120,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2432:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 123,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2449:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 122,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2449:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 125,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 173,
                  "src": "2458:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 124,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2458:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2413:58:0"
            },
            "scope": 1443,
            "src": "2272:593:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 180,
              "nodeType": "Block",
              "src": "3014:37:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 178,
                    "name": "FIELD_MODULUS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4,
                    "src": "3031:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 177,
                  "id": 179,
                  "nodeType": "Return",
                  "src": "3024:20:0"
                }
              ]
            },
            "documentation": "@notice Get the field modulus\n@return The field modulus",
            "id": 181,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "GetFieldModulus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 174,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2981:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 176,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 181,
                  "src": "3005:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 175,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3005:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3004:9:0"
            },
            "scope": 1443,
            "src": "2957:94:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 200,
              "nodeType": "Block",
              "src": "3138:43:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 193,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 183,
                        "src": "3162:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 194,
                          "name": "n",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 187,
                          "src": "3165:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 195,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 185,
                          "src": "3169:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3165:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 197,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 187,
                        "src": "3172:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 192,
                      "name": "addmod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "3155:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3155:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 191,
                  "id": 199,
                  "nodeType": "Return",
                  "src": "3148:26:0"
                }
              ]
            },
            "documentation": null,
            "id": 201,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "submod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 183,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3073:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3073:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 185,
                  "name": "b",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3084:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 184,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3084:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 187,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3095:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 186,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3072:33:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 190,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 201,
                  "src": "3129:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 189,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3129:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3128:9:0"
            },
            "scope": 1443,
            "src": "3057:124:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 244,
              "nodeType": "Block",
              "src": "3314:228:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 218,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 203,
                                "src": "3359:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 219,
                                "name": "yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 207,
                                "src": "3363:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 220,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3367:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 217,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3352:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3352:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 223,
                                "name": "xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 205,
                                "src": "3390:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 224,
                                "name": "yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "3394:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 225,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3398:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 222,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3383:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3383:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 227,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3414:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 216,
                          "name": "submod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 201,
                          "src": "3345:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3345:83:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 231,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 203,
                                "src": "3456:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 232,
                                "name": "yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "3460:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 233,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3464:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 230,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3449:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3449:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 236,
                                "name": "xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 205,
                                "src": "3487:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 237,
                                "name": "yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 207,
                                "src": "3491:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 238,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "3495:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 235,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "3480:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3480:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 240,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3511:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 229,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "3442:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3442:83:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 242,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3331:204:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 215,
                  "id": 243,
                  "nodeType": "Return",
                  "src": "3324:211:0"
                }
              ]
            },
            "documentation": null,
            "id": 245,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Mul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 203,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3213:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 202,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3213:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 205,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3225:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3225:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 207,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3245:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 206,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3245:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 209,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3257:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 208,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3257:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3203:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 212,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3296:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 211,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3296:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 214,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3305:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 213,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3305:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3295:18:0"
            },
            "scope": 1443,
            "src": "3187:355:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 270,
              "nodeType": "Block",
              "src": "3662:118:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 259,
                            "name": "xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 247,
                            "src": "3700:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 260,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 251,
                            "src": "3704:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 261,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3707:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 258,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2719,
                          "src": "3693:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3693:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 264,
                            "name": "xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 249,
                            "src": "3742:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 265,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 251,
                            "src": "3746:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 266,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3749:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 263,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2719,
                          "src": "3735:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3735:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 268,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3679:94:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 257,
                  "id": 269,
                  "nodeType": "Return",
                  "src": "3672:101:0"
                }
              ]
            },
            "documentation": null,
            "id": 271,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Muc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 252,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 247,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3574:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 246,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3574:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 249,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3586:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 248,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3586:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 251,
                  "name": "c",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3606:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3606:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3564:57:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 254,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3644:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 253,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3644:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 256,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "3653:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 255,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3643:18:0"
            },
            "scope": 1443,
            "src": "3548:232:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 298,
              "nodeType": "Block",
              "src": "3913:120:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 287,
                            "name": "xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 273,
                            "src": "3951:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 288,
                            "name": "yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 277,
                            "src": "3955:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 289,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "3959:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 286,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "3944:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3944:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 292,
                            "name": "xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 275,
                            "src": "3994:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 293,
                            "name": "yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 279,
                            "src": "3998:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 294,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4002:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 291,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "3987:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3987:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 296,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3930:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 285,
                  "id": 297,
                  "nodeType": "Return",
                  "src": "3923:103:0"
                }
              ]
            },
            "documentation": null,
            "id": 299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Add",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 280,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 273,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3812:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 272,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3812:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 275,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3824:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 274,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3824:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 277,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3844:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 276,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3844:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 279,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3856:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3856:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3802:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 282,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3895:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3895:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 284,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "3904:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3904:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3894:18:0"
            },
            "scope": 1443,
            "src": "3786:247:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 326,
              "nodeType": "Block",
              "src": "4172:120:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 315,
                            "name": "xx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 301,
                            "src": "4210:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 316,
                            "name": "yx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 305,
                            "src": "4214:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 317,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4218:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 314,
                          "name": "submod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 201,
                          "src": "4203:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4203:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 320,
                            "name": "xy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 303,
                            "src": "4253:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 321,
                            "name": "yy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 307,
                            "src": "4257:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 322,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4261:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 319,
                          "name": "submod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 201,
                          "src": "4246:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4246:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 324,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4189:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 313,
                  "id": 325,
                  "nodeType": "Return",
                  "src": "4182:103:0"
                }
              ]
            },
            "documentation": null,
            "id": 327,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Sub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 301,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4065:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 300,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4065:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 303,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4077:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 302,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4077:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 305,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4097:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 304,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4097:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 307,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4109:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4109:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4055:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 313,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 310,
                  "name": "rx",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4148:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 309,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4148:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 312,
                  "name": "ry",
                  "nodeType": "VariableDeclaration",
                  "scope": 327,
                  "src": "4160:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 311,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4160:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4147:24:0"
            },
            "scope": 1443,
            "src": "4039:253:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 358,
              "nodeType": "Block",
              "src": "4425:83:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 342,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 333,
                          "src": "4436:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 343,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 335,
                          "src": "4440:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 344,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "4435:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 346,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 333,
                          "src": "4454:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 347,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 335,
                          "src": "4458:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 345,
                        "name": "_FQ2Inv",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "4446:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4446:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "4435:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 350,
                  "nodeType": "ExpressionStatement",
                  "src": "4435:26:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 352,
                        "name": "xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 329,
                        "src": "4486:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 353,
                        "name": "xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 331,
                        "src": "4490:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 354,
                        "name": "yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 333,
                        "src": "4494:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 355,
                        "name": "yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 335,
                        "src": "4498:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 351,
                      "name": "_FQ2Mul",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 245,
                      "src": "4478:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                      }
                    },
                    "id": 356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4478:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 341,
                  "id": 357,
                  "nodeType": "Return",
                  "src": "4471:30:0"
                }
              ]
            },
            "documentation": null,
            "id": 359,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Div",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 329,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4324:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4324:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 331,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4336:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 330,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4336:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 333,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4356:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 332,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4356:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 335,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4368:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 334,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4368:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4314:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 338,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4407:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 337,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4407:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 340,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "4416:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 339,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4416:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4406:18:0"
            },
            "scope": 1443,
            "src": "4298:210:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 403,
              "nodeType": "Block",
              "src": "4593:263:0",
              "statements": [
                {
                  "assignments": [
                    371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 371,
                      "name": "inv",
                      "nodeType": "VariableDeclaration",
                      "scope": 404,
                      "src": "4603:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 370,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4603:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 388,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 375,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 363,
                                "src": "4639:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 376,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 363,
                                "src": "4642:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 377,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "4645:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 374,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "4632:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4632:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 380,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 361,
                                "src": "4668:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 381,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 361,
                                "src": "4671:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 382,
                                "name": "FIELD_MODULUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4,
                                "src": "4674:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 379,
                              "name": "mulmod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2719,
                              "src": "4661:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4661:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 384,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4690:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 373,
                          "name": "addmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2706,
                          "src": "4625:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4625:79:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 386,
                        "name": "FIELD_MODULUS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4,
                        "src": "4706:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 372,
                      "name": "_modInv",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 561,
                      "src": "4617:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4617:103:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4603:117:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 390,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 361,
                            "src": "4758:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 391,
                            "name": "inv",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 371,
                            "src": "4761:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 392,
                            "name": "FIELD_MODULUS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "4766:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 389,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2719,
                          "src": "4751:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4751:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 394,
                          "name": "FIELD_MODULUS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4,
                          "src": "4794:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 396,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 363,
                              "src": "4817:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 397,
                              "name": "inv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 371,
                              "src": "4820:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 398,
                              "name": "FIELD_MODULUS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4,
                              "src": "4825:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 395,
                            "name": "mulmod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2719,
                            "src": "4810:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4810:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4794:45:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 401,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4737:112:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 369,
                  "id": 402,
                  "nodeType": "Return",
                  "src": "4730:119:0"
                }
              ]
            },
            "documentation": null,
            "id": 404,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_FQ2Inv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 361,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4531:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4531:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 363,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4542:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4542:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4530:22:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 366,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4575:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4575:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 368,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 404,
                  "src": "4584:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4584:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4574:18:0"
            },
            "scope": 1443,
            "src": "4514:342:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 492,
              "nodeType": "Block",
              "src": "4981:386:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 418,
                      "name": "yyx",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "4991:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 417,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4991:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 419,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4991:11:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 421,
                      "name": "yyy",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "5012:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 420,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5012:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 422,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5012:11:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 424,
                      "name": "xxxx",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "5033:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 423,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5033:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 425,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5033:12:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 427,
                      "name": "xxxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 493,
                      "src": "5055:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 426,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5055:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 428,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5055:12:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 429,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5078:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 430,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5083:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 431,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5077:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 433,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 410,
                          "src": "5098:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 434,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 412,
                          "src": "5102:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 435,
                          "name": "yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 410,
                          "src": "5106:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 436,
                          "name": "yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 412,
                          "src": "5110:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 432,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "5090:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5090:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5077:36:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 439,
                  "nodeType": "ExpressionStatement",
                  "src": "5077:36:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 440,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5124:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 441,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5130:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 442,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5123:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 444,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "5146:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 445,
                          "name": "xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 408,
                          "src": "5150:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 446,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "5154:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 447,
                          "name": "xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 408,
                          "src": "5158:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 443,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "5138:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5138:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5123:38:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 450,
                  "nodeType": "ExpressionStatement",
                  "src": "5123:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 451,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5172:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 452,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5178:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 453,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5171:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 455,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5194:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 456,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5200:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 457,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 406,
                          "src": "5206:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 458,
                          "name": "xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 408,
                          "src": "5210:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 454,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "5186:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5186:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5171:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 461,
                  "nodeType": "ExpressionStatement",
                  "src": "5171:42:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 462,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5224:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 463,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5229:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 464,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5223:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 466,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5244:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 467,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5249:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 468,
                          "name": "xxxx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 424,
                          "src": "5254:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 469,
                          "name": "xxxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 427,
                          "src": "5260:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 465,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "5236:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5236:29:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5223:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 472,
                  "nodeType": "ExpressionStatement",
                  "src": "5223:42:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 473,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5276:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 474,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5281:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 475,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5275:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 477,
                          "name": "yyx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "5296:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 478,
                          "name": "yyy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "5301:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 479,
                          "name": "TWISTBX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7,
                          "src": "5306:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 480,
                          "name": "TWISTBY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "5315:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 476,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "5288:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5288:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "5275:48:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 483,
                  "nodeType": "ExpressionStatement",
                  "src": "5275:48:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 484,
                        "name": "yyx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 418,
                        "src": "5340:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5347:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5340:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 487,
                        "name": "yyy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 421,
                        "src": "5352:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5359:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "5352:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5340:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 416,
                  "id": 491,
                  "nodeType": "Return",
                  "src": "5333:27:0"
                }
              ]
            },
            "documentation": null,
            "id": 493,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isOnCurve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 406,
                  "name": "xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4891:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 405,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4891:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 408,
                  "name": "xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4903:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 407,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4903:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 410,
                  "name": "yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4923:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 409,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4923:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 412,
                  "name": "yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4935:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 411,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4935:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4881:70:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 415,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 493,
                  "src": "4975:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 414,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4975:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4974:6:0"
            },
            "scope": 1443,
            "src": "4862:505:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 560,
              "nodeType": "Block",
              "src": "5445:292:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 502,
                      "name": "t",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 500,
                      "src": "5455:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5459:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5455:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 505,
                  "nodeType": "ExpressionStatement",
                  "src": "5455:5:0"
                },
                {
                  "assignments": [
                    507
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 507,
                      "name": "newT",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5470:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 506,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5470:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 509,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5485:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5470:16:0"
                },
                {
                  "assignments": [
                    511
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 511,
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5496:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 510,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5496:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 513,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 512,
                    "name": "n",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 497,
                    "src": "5508:1:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5496:13:0"
                },
                {
                  "assignments": [
                    515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 515,
                      "name": "newR",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5519:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 514,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5519:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 517,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 516,
                    "name": "a",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 495,
                    "src": "5534:1:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5519:16:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 519,
                      "name": "q",
                      "nodeType": "VariableDeclaration",
                      "scope": 561,
                      "src": "5545:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 518,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5545:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 520,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5545:9:0"
                },
                {
                  "body": {
                    "id": 558,
                    "nodeType": "Block",
                    "src": "5582:149:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 524,
                            "name": "q",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 519,
                            "src": "5596:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 525,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 511,
                              "src": "5600:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 526,
                              "name": "newR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 515,
                              "src": "5604:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5600:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5596:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 529,
                        "nodeType": "ExpressionStatement",
                        "src": "5596:12:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 530,
                                "name": "t",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 500,
                                "src": "5623:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 531,
                                "name": "newT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 507,
                                "src": "5626:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 532,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5622:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 533,
                                "name": "newT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 507,
                                "src": "5635:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 535,
                                    "name": "t",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 500,
                                    "src": "5648:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 537,
                                        "name": "q",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 519,
                                        "src": "5658:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 538,
                                        "name": "newT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 507,
                                        "src": "5661:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 539,
                                        "name": "n",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 497,
                                        "src": "5667:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 536,
                                      "name": "mulmod",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2719,
                                      "src": "5651:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5651:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 541,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 497,
                                    "src": "5671:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 534,
                                  "name": "submod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 201,
                                  "src": "5641:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5641:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 543,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5634:40:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5622:52:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 545,
                        "nodeType": "ExpressionStatement",
                        "src": "5622:52:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 546,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 511,
                                "src": "5689:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 547,
                                "name": "newR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 515,
                                "src": "5692:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 548,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5688:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 549,
                                "name": "newR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 515,
                                "src": "5701:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 550,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 511,
                                  "src": "5707:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 553,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 551,
                                    "name": "q",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 519,
                                    "src": "5711:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 552,
                                    "name": "newR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 515,
                                    "src": "5715:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5711:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5707:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 555,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5700:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5688:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 557,
                        "nodeType": "ExpressionStatement",
                        "src": "5688:32:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 521,
                      "name": "newR",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 515,
                      "src": "5571:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5579:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5571:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 559,
                  "nodeType": "WhileStatement",
                  "src": "5564:167:0"
                }
              ]
            },
            "documentation": null,
            "id": 561,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_modInv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 495,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5390:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 494,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5390:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 497,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5401:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 496,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5401:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5389:22:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 500,
                  "name": "t",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5434:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5434:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5433:11:0"
            },
            "scope": 1443,
            "src": "5373:364:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 592,
              "nodeType": "Block",
              "src": "5953:108:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 584,
                        "name": "pt1xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 563,
                        "src": "5984:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 585,
                        "name": "pt1xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 565,
                        "src": "5991:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 586,
                        "name": "pt1yx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 567,
                        "src": "6010:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 587,
                        "name": "pt1yy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 569,
                        "src": "6017:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6036:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6043:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "id": 590,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5970:84:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_rational_1_by_1_$_t_rational_0_by_1_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256,int_const 1,int_const 0)"
                    }
                  },
                  "functionReturnParameters": 583,
                  "id": 591,
                  "nodeType": "Return",
                  "src": "5963:91:0"
                }
              ]
            },
            "documentation": null,
            "id": 593,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_toJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 563,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5773:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 562,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5773:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 565,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5788:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5788:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 567,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5811:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5811:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 569,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5826:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 568,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5826:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5763:82:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 572,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5878:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5878:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 574,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5887:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5887:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 576,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5904:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5904:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 578,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5913:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 577,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5913:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 580,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5930:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5930:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 582,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 593,
                  "src": "5939:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5939:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5868:84:0"
            },
            "scope": 1443,
            "src": "5743:318:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 653,
              "nodeType": "Block",
              "src": "6315:225:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 617,
                      "name": "invzx",
                      "nodeType": "VariableDeclaration",
                      "scope": 654,
                      "src": "6325:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 616,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6325:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 618,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6325:13:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 620,
                      "name": "invzy",
                      "nodeType": "VariableDeclaration",
                      "scope": 654,
                      "src": "6348:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 619,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6348:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 621,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6348:13:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 622,
                          "name": "invzx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 617,
                          "src": "6372:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 623,
                          "name": "invzy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 620,
                          "src": "6379:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 624,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "6371:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 626,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 603,
                          "src": "6396:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 627,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 605,
                          "src": "6403:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 625,
                        "name": "_FQ2Inv",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "6388:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 628,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6388:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "6371:38:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 630,
                  "nodeType": "ExpressionStatement",
                  "src": "6371:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 631,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 608,
                          "src": "6420:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 632,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 610,
                          "src": "6427:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 633,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "6419:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 635,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 595,
                          "src": "6444:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 636,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 597,
                          "src": "6451:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 637,
                          "name": "invzx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 617,
                          "src": "6458:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 638,
                          "name": "invzy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 620,
                          "src": "6465:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 634,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "6436:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6436:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "6419:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 641,
                  "nodeType": "ExpressionStatement",
                  "src": "6419:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 642,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 612,
                          "src": "6482:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 643,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 614,
                          "src": "6489:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 644,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "6481:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 646,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 599,
                          "src": "6506:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 647,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 601,
                          "src": "6513:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 648,
                          "name": "invzx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 617,
                          "src": "6520:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 649,
                          "name": "invzy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 620,
                          "src": "6527:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 645,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "6498:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6498:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "6481:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 652,
                  "nodeType": "ExpressionStatement",
                  "src": "6481:52:0"
                }
              ]
            },
            "documentation": null,
            "id": 654,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_fromJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 595,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6099:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 594,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6099:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 597,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6114:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6114:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 599,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6137:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6137:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 601,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6152:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6152:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 603,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6175:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 602,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6175:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 605,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6190:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 604,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6190:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6089:120:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 608,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6242:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6242:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 610,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6257:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 609,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6257:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 612,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6280:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 611,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6280:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 614,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 654,
                  "src": "6295:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 613,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6232:82:0"
            },
            "scope": 1443,
            "src": "6067:473:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1112,
              "nodeType": "Block",
              "src": "6843:3630:0",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 685,
                        "name": "pt1zx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 664,
                        "src": "6861:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6870:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6861:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 690,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 688,
                        "name": "pt1zy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 666,
                        "src": "6875:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6884:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6875:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6861:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 722,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "7221:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7230:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7221:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 725,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "7235:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7244:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7235:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "7221:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 759,
                    "nodeType": "IfStatement",
                    "src": "7217:354:0",
                    "trueBody": {
                      "id": 758,
                      "nodeType": "Block",
                      "src": "7247:324:0",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 729,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7287:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 731,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 730,
                                    "name": "PTXX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13,
                                    "src": "7291:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7287:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 732,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7298:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 733,
                                    "name": "PTXY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16,
                                    "src": "7302:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7298:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 735,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7329:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 737,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 736,
                                    "name": "PTYX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "7333:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7329:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 738,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7340:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 740,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 739,
                                    "name": "PTYY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22,
                                    "src": "7344:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7340:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 741,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7371:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 743,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 742,
                                    "name": "PTZX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25,
                                    "src": "7375:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7371:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 744,
                                    "name": "pt3",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "7382:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                      "typeString": "uint256[6] memory"
                                    }
                                  },
                                  "id": 746,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 745,
                                    "name": "PTZY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28,
                                    "src": "7386:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7382:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 747,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "TupleExpression",
                              "src": "7265:144:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 748,
                                  "name": "pt1xx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 656,
                                  "src": "7434:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 749,
                                  "name": "pt1xy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 658,
                                  "src": "7441:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 750,
                                  "name": "pt1yx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 660,
                                  "src": "7468:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 751,
                                  "name": "pt1yy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 662,
                                  "src": "7475:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 752,
                                  "name": "pt1zx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 664,
                                  "src": "7502:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 753,
                                  "name": "pt1zy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 666,
                                  "src": "7509:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 754,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7412:120:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "src": "7265:267:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 756,
                          "nodeType": "ExpressionStatement",
                          "src": "7265:267:0"
                        },
                        {
                          "expression": null,
                          "functionReturnParameters": 684,
                          "id": 757,
                          "nodeType": "Return",
                          "src": "7550:7:0"
                        }
                      ]
                    }
                  },
                  "id": 760,
                  "nodeType": "IfStatement",
                  "src": "6857:714:0",
                  "trueBody": {
                    "id": 721,
                    "nodeType": "Block",
                    "src": "6887:324:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 692,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6927:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 694,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 693,
                                  "name": "PTXX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "6931:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6927:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 695,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6938:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 697,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 696,
                                  "name": "PTXY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "6942:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6938:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 698,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6969:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 700,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 699,
                                  "name": "PTYX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "6973:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6969:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 701,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "6980:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 703,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 702,
                                  "name": "PTYY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22,
                                  "src": "6984:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6980:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 704,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "7011:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 706,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 705,
                                  "name": "PTZX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25,
                                  "src": "7015:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7011:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 707,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "7022:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 709,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 708,
                                  "name": "PTZY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28,
                                  "src": "7026:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7022:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 710,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6905:144:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 711,
                                "name": "pt2xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 668,
                                "src": "7074:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 712,
                                "name": "pt2xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 670,
                                "src": "7081:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 713,
                                "name": "pt2yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 672,
                                "src": "7108:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 714,
                                "name": "pt2yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 674,
                                "src": "7115:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 715,
                                "name": "pt2zx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 676,
                                "src": "7142:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 716,
                                "name": "pt2zy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 678,
                                "src": "7149:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 717,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7052:120:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "6905:267:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 719,
                        "nodeType": "ExpressionStatement",
                        "src": "6905:267:0"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 684,
                        "id": 720,
                        "nodeType": "Return",
                        "src": "7190:7:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 761,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "7586:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 762,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "7597:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 763,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7585:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 765,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "7618:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 766,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "7625:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 767,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "7632:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 768,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "7639:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 764,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7610:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 769,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7610:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7585:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 771,
                  "nodeType": "ExpressionStatement",
                  "src": "7585:60:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 785,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 772,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7676:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 774,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 773,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "7680:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7676:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 775,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7687:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 777,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 776,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "7691:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7687:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 778,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7675:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 780,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "7708:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 781,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "7715:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 782,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "7722:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 783,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "7729:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 779,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7700:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7700:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7675:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 786,
                  "nodeType": "ExpressionStatement",
                  "src": "7675:60:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 787,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "7766:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 788,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "7777:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 789,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7765:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 791,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "7798:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 792,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "7805:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 793,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "7812:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 794,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "7819:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 790,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7790:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 795,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7790:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7765:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 797,
                  "nodeType": "ExpressionStatement",
                  "src": "7765:60:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 798,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7856:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 800,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 799,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "7860:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7856:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 801,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "7867:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 803,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 802,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "7871:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "7867:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 804,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "7855:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 806,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "7888:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 807,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "7895:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 808,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "7902:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 809,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "7909:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 805,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "7880:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 810,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7880:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "7855:60:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 812,
                  "nodeType": "ExpressionStatement",
                  "src": "7855:60:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 813,
                        "name": "pt2xx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 668,
                        "src": "7950:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 814,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 683,
                          "src": "7959:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 816,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 815,
                          "name": "PTZX",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "7963:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7959:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7950:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 818,
                        "name": "pt2xy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 670,
                        "src": "7972:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 819,
                          "name": "pt3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 683,
                          "src": "7981:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                            "typeString": "uint256[6] memory"
                          }
                        },
                        "id": 821,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 820,
                          "name": "PTZY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "7985:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7981:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7972:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7950:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 897,
                  "nodeType": "IfStatement",
                  "src": "7946:705:0",
                  "trueBody": {
                    "id": 896,
                    "nodeType": "Block",
                    "src": "7992:659:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 824,
                              "name": "pt2yx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 672,
                              "src": "8014:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 825,
                                "name": "pt3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 683,
                                "src": "8023:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                  "typeString": "uint256[6] memory"
                                }
                              },
                              "id": 827,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 826,
                                "name": "PTYX",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "8027:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8023:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8014:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 829,
                              "name": "pt2yy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 674,
                              "src": "8036:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 830,
                                "name": "pt3",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 683,
                                "src": "8045:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                  "typeString": "uint256[6] memory"
                                }
                              },
                              "id": 832,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 831,
                                "name": "PTYY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22,
                                "src": "8049:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8045:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8036:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8014:40:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 866,
                        "nodeType": "IfStatement",
                        "src": "8010:342:0",
                        "trueBody": {
                          "id": 865,
                          "nodeType": "Block",
                          "src": "8056:296:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 835,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8104:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 837,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 836,
                                        "name": "PTXX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13,
                                        "src": "8108:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8104:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 838,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8115:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 840,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 839,
                                        "name": "PTXY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "8119:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8115:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 841,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8150:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 843,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 842,
                                        "name": "PTYX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19,
                                        "src": "8154:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8150:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 844,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8161:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 846,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 845,
                                        "name": "PTYY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22,
                                        "src": "8165:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8161:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 847,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8196:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 849,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 848,
                                        "name": "PTZX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25,
                                        "src": "8200:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8196:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 850,
                                        "name": "pt3",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 683,
                                        "src": "8207:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 852,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 851,
                                        "name": "PTZY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28,
                                        "src": "8211:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8207:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 853,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "8078:160:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 855,
                                      "name": "pt1xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 656,
                                      "src": "8264:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 856,
                                      "name": "pt1xy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 658,
                                      "src": "8271:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 857,
                                      "name": "pt1yx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 660,
                                      "src": "8278:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 858,
                                      "name": "pt1yy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 662,
                                      "src": "8285:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 859,
                                      "name": "pt1zx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 664,
                                      "src": "8292:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 860,
                                      "name": "pt1zy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 666,
                                      "src": "8299:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 854,
                                    "name": "_ECTwistDoubleJacobian",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1355,
                                    "src": "8241:22:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8241:64:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "src": "8078:227:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 863,
                              "nodeType": "ExpressionStatement",
                              "src": "8078:227:0"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 684,
                              "id": 864,
                              "nodeType": "Return",
                              "src": "8327:7:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 867,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8391:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 869,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 868,
                                  "name": "PTXX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "8395:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8391:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 870,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8402:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 872,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 871,
                                  "name": "PTXY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "8406:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8402:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 873,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8433:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 875,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 874,
                                  "name": "PTYX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "8437:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8433:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 876,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8444:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 878,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 877,
                                  "name": "PTYY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22,
                                  "src": "8448:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8444:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 879,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8475:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 881,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 880,
                                  "name": "PTZX",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25,
                                  "src": "8479:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8475:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 882,
                                  "name": "pt3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "8486:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "id": 884,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 883,
                                  "name": "PTZY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28,
                                  "src": "8490:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "8486:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 885,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8369:144:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8538:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8541:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8564:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8567:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8590:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8593:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 892,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8516:96:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0)"
                            }
                          },
                          "src": "8369:243:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 894,
                        "nodeType": "ExpressionStatement",
                        "src": "8369:243:0"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 684,
                        "id": 895,
                        "nodeType": "Return",
                        "src": "8630:7:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 898,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "8666:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 899,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "8677:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 900,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8665:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 902,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "8698:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 903,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "8705:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 904,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "8712:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 905,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "8723:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 901,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "8690:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8690:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8665:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 908,
                  "nodeType": "ExpressionStatement",
                  "src": "8665:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 909,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "8763:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 910,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "8774:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 911,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8762:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 913,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "8795:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 914,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "8802:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 915,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8809:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 917,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 916,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "8813:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8809:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 918,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8820:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 920,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 919,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "8824:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8820:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 912,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "8787:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8787:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8762:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 923,
                  "nodeType": "ExpressionStatement",
                  "src": "8762:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 924,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "8860:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 925,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "8871:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 926,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8859:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 928,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "8892:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 929,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "8899:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 930,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8906:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 932,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 931,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "8910:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8906:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 933,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "8917:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 935,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 934,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "8921:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8917:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 927,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "8884:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 936,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8884:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8859:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 938,
                  "nodeType": "ExpressionStatement",
                  "src": "8859:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 939,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "8957:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 940,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "8968:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 941,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8956:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 943,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "8989:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 944,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "8996:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 945,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "9003:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 946,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "9014:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 942,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "8981:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 947,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8981:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "8956:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 949,
                  "nodeType": "ExpressionStatement",
                  "src": "8956:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 950,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "9060:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 951,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "9071:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 952,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9059:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 954,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9092:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 955,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9099:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 956,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9106:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 958,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 957,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "9110:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9106:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 959,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9117:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 961,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 960,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "9121:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9117:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 953,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9084:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9084:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9059:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 964,
                  "nodeType": "ExpressionStatement",
                  "src": "9059:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 965,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9181:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 966,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9192:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 967,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9180:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 969,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9213:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 970,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9220:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 971,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "9227:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 972,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "9238:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 968,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9205:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 973,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9205:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9180:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 975,
                  "nodeType": "ExpressionStatement",
                  "src": "9180:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 976,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9290:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 978,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 977,
                            "name": "PTZX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "9294:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9290:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 979,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9301:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 981,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 980,
                            "name": "PTZY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "9305:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9301:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 982,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9289:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 984,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9322:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 985,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9329:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 986,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9336:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 987,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9347:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 983,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9314:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 988,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9314:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9289:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 990,
                  "nodeType": "ExpressionStatement",
                  "src": "9289:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 991,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9394:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 992,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9405:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 993,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9393:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 995,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "9426:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 996,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "9433:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 997,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "9440:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 998,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "9451:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 994,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9418:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9418:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9393:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1001,
                  "nodeType": "ExpressionStatement",
                  "src": "9393:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1002,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9485:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1003,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9496:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1004,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9484:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1006,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9517:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1007,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9524:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1008,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9531:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1009,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9542:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1005,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9509:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9509:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9484:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1012,
                  "nodeType": "ExpressionStatement",
                  "src": "9484:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1013,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9580:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1014,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9591:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1015,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9579:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1017,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9612:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1018,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9619:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1019,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "9626:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1020,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "9637:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1016,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "9604:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9604:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9579:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1023,
                  "nodeType": "ExpressionStatement",
                  "src": "9579:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1024,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9685:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1025,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9696:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1026,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9684:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1028,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "9717:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1029,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "9724:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9731:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          }
                        ],
                        "id": 1027,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "9709:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9709:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9684:49:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1033,
                  "nodeType": "ExpressionStatement",
                  "src": "9684:49:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1034,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9793:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1035,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9804:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1036,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9792:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1038,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9825:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1039,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9832:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1040,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "9839:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1041,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 678,
                          "src": "9850:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1037,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "9817:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9817:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9792:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1044,
                  "nodeType": "ExpressionStatement",
                  "src": "9792:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1045,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9927:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1047,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1046,
                            "name": "PTXX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13,
                            "src": "9931:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9927:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1048,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "9938:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1050,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1049,
                            "name": "PTXY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "9942:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9938:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1051,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "9926:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1053,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "9959:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1054,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "9966:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1055,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "9973:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1056,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "9984:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1052,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "9951:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1057,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9951:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "9926:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1059,
                  "nodeType": "ExpressionStatement",
                  "src": "9926:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1060,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10025:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1061,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10036:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1062,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10024:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1064,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "10057:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1065,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 674,
                          "src": "10064:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1066,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 668,
                          "src": "10071:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1067,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 670,
                          "src": "10082:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1063,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "10049:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1068,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10049:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10024:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1070,
                  "nodeType": "ExpressionStatement",
                  "src": "10024:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1071,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10133:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1072,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10144:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1073,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10132:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1075,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "10165:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1076,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "10172:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1077,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10179:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1078,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10190:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1074,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10157:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10157:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10132:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1081,
                  "nodeType": "ExpressionStatement",
                  "src": "10132:64:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1082,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "10247:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1083,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "10258:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1084,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10246:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1086,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 664,
                          "src": "10279:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1087,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 666,
                          "src": "10286:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1088,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10293:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1090,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1089,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "10297:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10293:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1091,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10304:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1093,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1092,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "10308:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10304:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1085,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10271:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10271:43:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10246:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1096,
                  "nodeType": "ExpressionStatement",
                  "src": "10246:68:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1097,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10345:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1099,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1098,
                            "name": "PTYX",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "10349:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "10345:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1100,
                            "name": "pt3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "10356:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                              "typeString": "uint256[6] memory"
                            }
                          },
                          "id": 1102,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1101,
                            "name": "PTYY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "10360:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "10356:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1103,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10344:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1105,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 660,
                          "src": "10377:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1106,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 662,
                          "src": "10384:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1107,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "10391:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1108,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 658,
                          "src": "10402:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1104,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "10369:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1109,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10369:39:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10344:64:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1111,
                  "nodeType": "ExpressionStatement",
                  "src": "10344:64:0"
                }
              ]
            },
            "documentation": null,
            "id": 1113,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_ECTwistAddJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 656,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6584:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6584:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 658,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6599:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6599:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 660,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6622:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 659,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6622:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 662,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6637:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 661,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6637:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 664,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6660:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 663,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6660:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 666,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6675:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 665,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6675:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 668,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6698:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 667,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6698:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 670,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6713:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6713:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 672,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6736:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6736:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 674,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6751:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6751:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 676,
                  "name": "pt2zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6774:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6774:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 678,
                  "name": "pt2zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6789:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6789:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6574:229:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 683,
                  "name": "pt3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1113,
                  "src": "6827:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                    "typeString": "uint256[6]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 680,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6827:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 682,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "36",
                      "id": 681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6835:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "6"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "6827:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                      "typeString": "uint256[6]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6826:16:0"
            },
            "scope": 1443,
            "src": "6546:3927:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1354,
              "nodeType": "Block",
              "src": "10773:1584:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1140,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "10784:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1141,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "10791:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1142,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10783:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1144,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "10808:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1145,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "10815:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10822:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          }
                        ],
                        "id": 1143,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "10800:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10800:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10783:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1149,
                  "nodeType": "ExpressionStatement",
                  "src": "10783:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1150,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "10855:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1151,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "10862:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1152,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10854:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1154,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "10879:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1155,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "10886:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1156,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "10893:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1157,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "10900:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1153,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10871:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10871:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10854:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1160,
                  "nodeType": "ExpressionStatement",
                  "src": "10854:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1161,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "10934:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1162,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "10941:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1163,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "10933:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1165,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "10958:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1166,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "10965:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1167,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "10972:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1168,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "10979:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1164,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "10950:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10950:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "10933:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1171,
                  "nodeType": "ExpressionStatement",
                  "src": "10933:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1172,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11009:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1173,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11016:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1174,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11008:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1176,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11033:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1177,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11040:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1178,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "11047:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1179,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "11054:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1175,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11025:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11025:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11008:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1182,
                  "nodeType": "ExpressionStatement",
                  "src": "11008:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1183,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11080:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1184,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11087:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1185,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11079:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1187,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11104:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1188,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11111:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1189,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "11118:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1190,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "11125:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1186,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11096:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11096:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11079:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1193,
                  "nodeType": "ExpressionStatement",
                  "src": "11079:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1194,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11159:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1195,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11166:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1196,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11158:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1198,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11183:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1199,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11190:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1200,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11197:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1201,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11204:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1197,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11175:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11175:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11158:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1204,
                  "nodeType": "ExpressionStatement",
                  "src": "11158:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1205,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11230:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1206,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11237:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1207,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11229:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1209,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11254:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1210,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11261:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11268:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 1208,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "11246:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1212,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11246:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11229:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1214,
                  "nodeType": "ExpressionStatement",
                  "src": "11229:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1215,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11301:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1216,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11308:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1217,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11300:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1219,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11325:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1220,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11332:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1221,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11339:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1222,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11346:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1218,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "11317:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11317:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11300:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1225,
                  "nodeType": "ExpressionStatement",
                  "src": "11300:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1226,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11384:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1227,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11391:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1228,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11383:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1230,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "11408:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1231,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "11415:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1232,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "11422:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1233,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "11429:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1229,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11400:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11400:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11383:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1236,
                  "nodeType": "ExpressionStatement",
                  "src": "11383:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1237,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11467:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1238,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11474:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1239,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11466:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1241,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11491:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1242,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11498:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 1243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11505:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          }
                        ],
                        "id": 1240,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "11483:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11483:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11466:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1246,
                  "nodeType": "ExpressionStatement",
                  "src": "11466:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1247,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11538:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1248,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11545:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1249,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11537:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1251,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11562:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1252,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11569:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1253,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "11576:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1254,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "11583:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1250,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "11554:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11554:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11537:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1257,
                  "nodeType": "ExpressionStatement",
                  "src": "11537:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1258,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11613:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1259,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11620:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1260,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11612:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1262,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11637:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1263,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11644:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1264,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11651:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1265,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11658:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1261,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11629:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11629:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11612:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1268,
                  "nodeType": "ExpressionStatement",
                  "src": "11612:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1269,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11694:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1270,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11701:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1271,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11693:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1273,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "11718:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1274,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "11725:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11732:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 1272,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "11710:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11710:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11693:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1278,
                  "nodeType": "ExpressionStatement",
                  "src": "11693:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1279,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11765:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1280,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11772:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1281,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11764:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1283,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11789:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1284,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11796:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1285,
                          "name": "pt1yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1119,
                          "src": "11803:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1286,
                          "name": "pt1yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "11810:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1282,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11781:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11781:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11764:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1289,
                  "nodeType": "ExpressionStatement",
                  "src": "11764:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1290,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11840:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1291,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11847:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1292,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11839:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1294,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11864:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1295,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11871:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1296,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "11878:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1297,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "11885:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1293,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "11856:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11856:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11839:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1300,
                  "nodeType": "ExpressionStatement",
                  "src": "11839:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1310,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1301,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11927:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1302,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11934:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1303,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11926:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1305,
                          "name": "pt2yx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "11951:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1306,
                          "name": "pt2yy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "11958:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1307,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "11965:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1308,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "11972:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1304,
                        "name": "_FQ2Sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 327,
                        "src": "11943:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1309,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11943:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "11926:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1311,
                  "nodeType": "ExpressionStatement",
                  "src": "11926:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1312,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "12039:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1313,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "12046:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1314,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12038:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1316,
                          "name": "pt1xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "12063:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1317,
                          "name": "pt1xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1117,
                          "src": "12070:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12077:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          }
                        ],
                        "id": 1315,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "12055:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12055:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12038:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1321,
                  "nodeType": "ExpressionStatement",
                  "src": "12038:41:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1322,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "12110:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1323,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "12117:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1324,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12109:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1326,
                          "name": "pt2xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1128,
                          "src": "12134:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1327,
                          "name": "pt2xy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1130,
                          "src": "12141:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1328,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "12148:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1329,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "12155:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1325,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "12126:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12126:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12109:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1332,
                  "nodeType": "ExpressionStatement",
                  "src": "12109:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1333,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12192:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1334,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12199:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1335,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12191:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1337,
                          "name": "pt1zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "12216:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1338,
                          "name": "pt1zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1125,
                          "src": "12223:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1339,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12230:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1340,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12237:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1336,
                        "name": "_FQ2Mul",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 245,
                        "src": "12208:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1341,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12208:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12191:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1343,
                  "nodeType": "ExpressionStatement",
                  "src": "12191:52:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1344,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12271:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1345,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12278:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1346,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "12270:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1348,
                          "name": "pt2zx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1136,
                          "src": "12295:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1349,
                          "name": "pt2zy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1138,
                          "src": "12302:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "38",
                          "id": 1350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12309:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          }
                        ],
                        "id": 1347,
                        "name": "_FQ2Muc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 271,
                        "src": "12287:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256,uint256)"
                        }
                      },
                      "id": 1351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12287:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256)"
                      }
                    },
                    "src": "12270:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1353,
                  "nodeType": "ExpressionStatement",
                  "src": "12270:41:0"
                }
              ]
            },
            "documentation": null,
            "id": 1355,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_ECTwistDoubleJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1115,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10520:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10520:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1117,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10535:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1116,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10535:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1119,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10558:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10558:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1121,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10573:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1120,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10573:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1123,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10596:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1122,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10596:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1125,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10611:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1124,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10611:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10510:120:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1139,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1128,
                  "name": "pt2xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10662:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10662:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1130,
                  "name": "pt2xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10677:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10677:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1132,
                  "name": "pt2yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10700:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10700:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1134,
                  "name": "pt2yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10715:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10715:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1136,
                  "name": "pt2zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10738:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1135,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10738:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1138,
                  "name": "pt2zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1355,
                  "src": "10753:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1137,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10753:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10652:120:0"
            },
            "scope": 1443,
            "src": "10479:1878:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1441,
              "nodeType": "Block",
              "src": "12569:631:0",
              "statements": [
                {
                  "body": {
                    "id": 1439,
                    "nodeType": "Block",
                    "src": "12594:600:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1379,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1357,
                                  "src": "12613:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12617:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12613:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1382,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12612:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12623:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12612:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1415,
                        "nodeType": "IfStatement",
                        "src": "12608:305:0",
                        "trueBody": {
                          "id": 1414,
                          "nodeType": "Block",
                          "src": "12626:287:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1385,
                                  "name": "pt2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1374,
                                  "src": "12644:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1387,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12691:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1389,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1388,
                                        "name": "PTXX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13,
                                        "src": "12695:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12691:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1390,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12702:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1392,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1391,
                                        "name": "PTXY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "12706:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12702:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1393,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12733:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1395,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1394,
                                        "name": "PTYX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19,
                                        "src": "12737:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12733:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1396,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12744:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1398,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1397,
                                        "name": "PTYY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22,
                                        "src": "12748:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12744:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1399,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12775:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1401,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1400,
                                        "name": "PTZX",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25,
                                        "src": "12779:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12775:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1402,
                                        "name": "pt2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1374,
                                        "src": "12786:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                          "typeString": "uint256[6] memory"
                                        }
                                      },
                                      "id": 1404,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1403,
                                        "name": "PTZY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28,
                                        "src": "12790:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12786:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1405,
                                      "name": "pt1xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1359,
                                      "src": "12817:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1406,
                                      "name": "pt1xy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1361,
                                      "src": "12824:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1407,
                                      "name": "pt1yx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1363,
                                      "src": "12851:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1408,
                                      "name": "pt1yy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1365,
                                      "src": "12858:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1409,
                                      "name": "pt1zx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1367,
                                      "src": "12885:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1410,
                                      "name": "pt1zy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1369,
                                      "src": "12892:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1386,
                                    "name": "_ECTwistAddJacobian",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1113,
                                    "src": "12650:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$6_memory_ptr_$",
                                      "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256[6] memory)"
                                    }
                                  },
                                  "id": 1411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12650:248:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                    "typeString": "uint256[6] memory"
                                  }
                                },
                                "src": "12644:254:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                                  "typeString": "uint256[6] memory"
                                }
                              },
                              "id": 1413,
                              "nodeType": "ExpressionStatement",
                              "src": "12644:254:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1416,
                                "name": "pt1xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1359,
                                "src": "12944:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1417,
                                "name": "pt1xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1361,
                                "src": "12951:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1418,
                                "name": "pt1yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1363,
                                "src": "12974:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1419,
                                "name": "pt1yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1365,
                                "src": "12981:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1420,
                                "name": "pt1zx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "13004:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1421,
                                "name": "pt1zy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1369,
                                "src": "13011:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1422,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "12926:104:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1424,
                                "name": "pt1xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1359,
                                "src": "13073:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1425,
                                "name": "pt1xy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1361,
                                "src": "13080:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1426,
                                "name": "pt1yx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1363,
                                "src": "13103:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1427,
                                "name": "pt1yy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1365,
                                "src": "13110:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1428,
                                "name": "pt1zx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "13133:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1429,
                                "name": "pt1zy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1369,
                                "src": "13140:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1423,
                              "name": "_ECTwistDoubleJacobian",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "13033:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 1430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13033:126:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "12926:233:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1432,
                        "nodeType": "ExpressionStatement",
                        "src": "12926:233:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1433,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1357,
                            "src": "13174:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1434,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1357,
                              "src": "13178:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 1435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13182:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "13178:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13174:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1438,
                        "nodeType": "ExpressionStatement",
                        "src": "13174:9:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1376,
                      "name": "d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1357,
                      "src": "12586:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1377,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12591:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12586:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1440,
                  "nodeType": "WhileStatement",
                  "src": "12579:615:0"
                }
              ]
            },
            "documentation": null,
            "id": 1442,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_ECTwistMulJacobian",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1370,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1357,
                  "name": "d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12401:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12401:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1359,
                  "name": "pt1xx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12420:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12420:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1361,
                  "name": "pt1xy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12435:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12435:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1363,
                  "name": "pt1yx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12458:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12458:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1365,
                  "name": "pt1yy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12473:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1364,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12473:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1367,
                  "name": "pt1zx",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12496:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1366,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12496:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1369,
                  "name": "pt1zy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12511:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1368,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12511:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12391:139:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1374,
                  "name": "pt2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1442,
                  "src": "12553:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr",
                    "typeString": "uint256[6]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1371,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12553:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1373,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "36",
                      "id": 1372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12561:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "6"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12553:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                      "typeString": "uint256[6]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12552:16:0"
            },
            "scope": 1443,
            "src": "12363:837:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2704,
        "src": "180:13022:0"
      },
      {
        "id": 1444,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".14"
        ],
        "nodeType": "PragmaDirective",
        "src": "14309:24:0"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2081,
        "linearizedBaseContracts": [
          2081
        ],
        "name": "Pairing",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "Pairing.G1Point",
            "id": 1449,
            "members": [
              {
                "constant": false,
                "id": 1446,
                "name": "X",
                "nodeType": "VariableDeclaration",
                "scope": 1449,
                "src": "14381:6:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1445,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "14381:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1448,
                "name": "Y",
                "nodeType": "VariableDeclaration",
                "scope": 1449,
                "src": "14397:6:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1447,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "14397:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "G1Point",
            "nodeType": "StructDefinition",
            "scope": 2081,
            "src": "14356:54:0",
            "visibility": "public"
          },
          {
            "canonicalName": "Pairing.G2Point",
            "id": 1458,
            "members": [
              {
                "constant": false,
                "id": 1453,
                "name": "X",
                "nodeType": "VariableDeclaration",
                "scope": 1458,
                "src": "14494:9:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                  "typeString": "uint256[2]"
                },
                "typeName": {
                  "baseType": {
                    "id": 1450,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14494:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1452,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 1451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14499:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "2"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "14494:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                    "typeString": "uint256[2]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1457,
                "name": "Y",
                "nodeType": "VariableDeclaration",
                "scope": 1458,
                "src": "14513:9:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                  "typeString": "uint256[2]"
                },
                "typeName": {
                  "baseType": {
                    "id": 1454,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14513:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1456,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 1455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14518:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "2"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "14513:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                    "typeString": "uint256[2]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "G2Point",
            "nodeType": "StructDefinition",
            "scope": 2081,
            "src": "14469:60:0",
            "visibility": "public"
          },
          {
            "body": {
              "id": 1468,
              "nodeType": "Block",
              "src": "14616:37:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14641:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14644:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1463,
                      "name": "G1Point",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1449,
                      "src": "14633:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                        "typeString": "type(struct Pairing.G1Point storage pointer)"
                      }
                    },
                    "id": 1466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14633:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "functionReturnParameters": 1462,
                  "id": 1467,
                  "nodeType": "Return",
                  "src": "14626:20:0"
                }
              ]
            },
            "documentation": "@return the generator of G1",
            "id": 1469,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "P1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1459,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14581:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1461,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "14607:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1460,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "14607:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14606:9:0"
            },
            "scope": 2081,
            "src": "14570:83:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1483,
              "nodeType": "Block",
              "src": "14740:409:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3131353539373332303332393836333837313037393931303034303231333932323835373833393235383132383631383231313932353330393137343033313531343532333931383035363334",
                            "id": 1475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14779:77:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_11559732032986387107991004021392285783925812861821192530917403151452391805634_by_1",
                              "typeString": "int_const 1155...(69 digits omitted)...5634"
                            },
                            "value": "11559732032986387107991004021392285783925812861821192530917403151452391805634"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "3130383537303436393939303233303537313335393434353730373632323332383239343831333730373536333539353738353138303836393930353139393933323835363535383532373831",
                            "id": 1476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14871:77:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10857046999023057135944570762232829481370756359578518086990519993285655852781_by_1",
                              "typeString": "int_const 1085...(69 digits omitted)...2781"
                            },
                            "value": "10857046999023057135944570762232829481370756359578518086990519993285655852781"
                          }
                        ],
                        "id": 1477,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "14778:171:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "hexValue": "34303832333637383735383633343333363831333332323033343033313435343335353638333136383531333237353933343031323038313035373431303736323134313230303933353331",
                            "id": 1478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14964:76:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4082367875863433681332203403145435568316851327593401208105741076214120093531_by_1",
                              "typeString": "int_const 4082...(68 digits omitted)...3531"
                            },
                            "value": "4082367875863433681332203403145435568316851327593401208105741076214120093531"
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "38343935363533393233313233343331343137363034393733323437343839323732343338343138313930353837323633363030313438373730323830363439333036393538313031393330",
                            "id": 1479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15055:76:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8495653923123431417604973247489272438418190587263600148770280649306958101930_by_1",
                              "typeString": "int_const 8495...(68 digits omitted)...1930"
                            },
                            "value": "8495653923123431417604973247489272438418190587263600148770280649306958101930"
                          }
                        ],
                        "id": 1480,
                        "isConstant": false,
                        "isInlineArray": true,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "14963:169:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                          "typeString": "uint256[2] memory"
                        }
                      ],
                      "id": 1474,
                      "name": "G2Point",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1458,
                      "src": "14757:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                        "typeString": "type(struct Pairing.G2Point storage pointer)"
                      }
                    },
                    "id": 1481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14757:385:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "functionReturnParameters": 1473,
                  "id": 1482,
                  "nodeType": "Return",
                  "src": "14750:392:0"
                }
              ]
            },
            "documentation": "@return the generator of G2",
            "id": 1484,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "P2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1470,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14705:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1472,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1484,
                  "src": "14731:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1471,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "14731:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14730:9:0"
            },
            "scope": 2081,
            "src": "14694:455:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1522,
              "nodeType": "Block",
              "src": "15292:267:0",
              "statements": [
                {
                  "assignments": [
                    1492
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1492,
                      "name": "q",
                      "nodeType": "VariableDeclaration",
                      "scope": 1523,
                      "src": "15354:6:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1491,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15354:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1494,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "3231383838323432383731383339323735323232323436343035373435323537323735303838363936333131313537323937383233363632363839303337383934363435323236323038353833",
                    "id": 1493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15363:77:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_21888242871839275222246405745257275088696311157297823662689037894645226208583_by_1",
                      "typeString": "int_const 2188...(69 digits omitted)...8583"
                    },
                    "value": "21888242871839275222246405745257275088696311157297823662689037894645226208583"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15354:86:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1495,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "15454:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        "id": 1496,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "X",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1446,
                        "src": "15454:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15461:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "15454:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1502,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1499,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "15466:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        "id": 1500,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "15466:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15473:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "15466:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15454:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1509,
                  "nodeType": "IfStatement",
                  "src": "15450:58:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15503:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15506:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1504,
                        "name": "G1Point",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1449,
                        "src": "15495:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 1507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15495:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "functionReturnParameters": 1490,
                    "id": 1508,
                    "nodeType": "Return",
                    "src": "15488:20:0"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1511,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "15533:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        "id": 1512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "X",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1446,
                        "src": "15533:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1513,
                          "name": "q",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1492,
                          "src": "15538:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1514,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1486,
                                  "src": "15543:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                },
                                "id": 1515,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Y",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1448,
                                "src": "15543:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1516,
                                "name": "q",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1492,
                                "src": "15549:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15543:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1518,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "15542:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "15538:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1510,
                      "name": "G1Point",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1449,
                      "src": "15525:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                        "typeString": "type(struct Pairing.G1Point storage pointer)"
                      }
                    },
                    "id": 1520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15525:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "functionReturnParameters": 1490,
                  "id": 1521,
                  "nodeType": "Return",
                  "src": "15518:34:0"
                }
              ]
            },
            "documentation": "@return the negation of p, i.e. p.addition(p.negate()) should be zero.",
            "id": 1523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "negate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1486,
                  "name": "p",
                  "nodeType": "VariableDeclaration",
                  "scope": 1523,
                  "src": "15249:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1485,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15249:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15248:11:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1489,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1523,
                  "src": "15283:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1488,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15283:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15282:9:0"
            },
            "scope": 2081,
            "src": "15233:326:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1574,
              "nodeType": "Block",
              "src": "15679:391:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1536,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 1575,
                      "src": "15689:20:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                        "typeString": "uint256[4]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1534,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15689:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1535,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 1533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15694:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "4"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "15689:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr",
                          "typeString": "uint256[4]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1537,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15689:20:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1538,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15719:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1540,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15725:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15719:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1541,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1525,
                        "src": "15730:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1542,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "X",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1446,
                      "src": "15730:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15719:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1544,
                  "nodeType": "ExpressionStatement",
                  "src": "15719:15:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1545,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15744:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1547,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15750:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15744:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1548,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1525,
                        "src": "15755:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1549,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Y",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "15755:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15744:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1551,
                  "nodeType": "ExpressionStatement",
                  "src": "15744:15:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1552,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15769:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1554,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15775:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15769:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1555,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "15780:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1556,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "X",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1446,
                      "src": "15780:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15769:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1558,
                  "nodeType": "ExpressionStatement",
                  "src": "15769:15:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1559,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1536,
                        "src": "15794:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr",
                          "typeString": "uint256[4] memory"
                        }
                      },
                      "id": 1561,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 1560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15800:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15794:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1562,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "15805:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Y",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "15805:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15794:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1565,
                  "nodeType": "ExpressionStatement",
                  "src": "15794:15:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1567,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1575,
                      "src": "15819:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1566,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15819:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1568,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15819:12:0"
                },
                {
                  "externalReferences": [
                    {
                      "input": {
                        "declaration": 1536,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15902:5:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "r": {
                        "declaration": 1530,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15915:1:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1567,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "15864:7:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1567,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16000:7:0",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1569,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    success := call(sub(gas(), 2000), 6, 0, input, 0xc0, r, 0x60)\n    switch success\n    case 0 {\n        invalid()\n    }\n}",
                  "src": "15841:213:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1571,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1567,
                        "src": "16055:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1570,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "16047:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16047:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1573,
                  "nodeType": "ExpressionStatement",
                  "src": "16047:16:0"
                }
              ]
            },
            "documentation": "@return the sum of two points of G1",
            "id": 1575,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1525,
                  "name": "p1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1575,
                  "src": "15626:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1524,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15626:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1527,
                  "name": "p2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1575,
                  "src": "15638:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1526,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15638:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15625:24:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1530,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1575,
                  "src": "15668:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1529,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "15668:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15667:11:0"
            },
            "scope": 2081,
            "src": "15608:462:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1639,
              "nodeType": "Block",
              "src": "16195:135:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1584,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16206:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1587,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16206:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1588,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16210:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16206:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1589,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16214:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1590,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16214:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1592,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16218:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16214:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1593,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16222:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1594,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16222:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1596,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16226:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16222:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1597,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "16230:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1598,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16230:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1600,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16234:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "16230:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1601,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "16205:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256,uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1604,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16259:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1605,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16259:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1607,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16264:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16259:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1608,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16267:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1609,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16267:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1611,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16272:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16267:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1612,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16275:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1613,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16275:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1615,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16280:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16275:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1616,
                              "name": "p1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1577,
                              "src": "16283:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1617,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16283:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1619,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16288:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16283:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1620,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16291:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1621,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16291:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1623,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16296:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16291:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1624,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16299:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1625,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1453,
                            "src": "16299:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1627,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16304:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16299:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1628,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16307:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1629,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16307:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1631,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16312:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16307:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1632,
                              "name": "p2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "16315:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                                "typeString": "struct Pairing.G2Point memory"
                              }
                            },
                            "id": 1633,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1457,
                            "src": "16315:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 1635,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16320:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16315:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1602,
                          "name": "BN256G2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1443,
                          "src": "16240:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_BN256G2_$1443_$",
                            "typeString": "type(library BN256G2)"
                          }
                        },
                        "id": 1603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "ECTwistAdd",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 106,
                        "src": "16240:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                        }
                      },
                      "id": 1636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16240:83:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(uint256,uint256,uint256,uint256)"
                      }
                    },
                    "src": "16205:118:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1638,
                  "nodeType": "ExpressionStatement",
                  "src": "16205:118:0"
                }
              ]
            },
            "documentation": "@return the sum of two points of G2",
            "id": 1640,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1577,
                  "name": "p1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1640,
                  "src": "16137:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1576,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "16137:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1579,
                  "name": "p2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1640,
                  "src": "16149:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1578,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "16149:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16136:24:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1582,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1640,
                  "src": "16184:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1581,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "16184:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16183:11:0"
            },
            "scope": 2081,
            "src": "16119:211:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1683,
              "nodeType": "Block",
              "src": "16551:362:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1653,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 1684,
                      "src": "16561:20:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                        "typeString": "uint256[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1651,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "16561:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1652,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 1650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16566:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "16561:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                          "typeString": "uint256[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1654,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16561:20:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1655,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "16591:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 1657,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16597:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16591:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1658,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1642,
                        "src": "16602:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1659,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "X",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1446,
                      "src": "16602:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16591:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1661,
                  "nodeType": "ExpressionStatement",
                  "src": "16591:14:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1662,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "16615:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 1664,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16621:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16615:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1665,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1642,
                        "src": "16626:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "id": 1666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Y",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1448,
                      "src": "16626:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16615:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1668,
                  "nodeType": "ExpressionStatement",
                  "src": "16615:14:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1669,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1653,
                        "src": "16639:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 1671,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16645:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16639:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1672,
                      "name": "s",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1644,
                      "src": "16650:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16639:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1674,
                  "nodeType": "ExpressionStatement",
                  "src": "16639:12:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1676,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1684,
                      "src": "16661:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1675,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "16661:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1677,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16661:12:0"
                },
                {
                  "externalReferences": [
                    {
                      "input": {
                        "declaration": 1653,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16744:5:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "r": {
                        "declaration": 1647,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16757:1:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1676,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16706:7:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1676,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "16842:7:0",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1678,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    success := call(sub(gas(), 2000), 7, 0, input, 0x80, r, 0x60)\n    switch success\n    case 0 {\n        invalid()\n    }\n}",
                  "src": "16683:213:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1680,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1676,
                        "src": "16898:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1679,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "16889:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16889:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1682,
                  "nodeType": "ExpressionStatement",
                  "src": "16889:17:0"
                }
              ]
            },
            "documentation": "@return the product of a point on G1 and a scalar, i.e.\n p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p.",
            "id": 1684,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "scalar_mul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1642,
                  "name": "p",
                  "nodeType": "VariableDeclaration",
                  "scope": 1684,
                  "src": "16503:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1641,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "16503:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1644,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 1684,
                  "src": "16514:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1643,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16514:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16502:19:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1648,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1647,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1684,
                  "src": "16540:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1646,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "16540:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16539:11:0"
            },
            "scope": 2081,
            "src": "16483:430:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1842,
              "nodeType": "Block",
              "src": "17193:830:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1696,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1687,
                            "src": "17211:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory[] memory"
                            }
                          },
                          "id": 1697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17211:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1698,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1690,
                            "src": "17224:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                              "typeString": "struct Pairing.G2Point memory[] memory"
                            }
                          },
                          "id": 1699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17224:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17211:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "17203:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17203:31:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1702,
                  "nodeType": "ExpressionStatement",
                  "src": "17203:31:0"
                },
                {
                  "assignments": [
                    1704
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1704,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17244:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1703,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17244:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1707,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1705,
                      "name": "p1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1687,
                      "src": "17260:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory[] memory"
                      }
                    },
                    "id": 1706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "17260:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17244:25:0"
                },
                {
                  "assignments": [
                    1709
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1709,
                      "name": "inputSize",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17279:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1708,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17279:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1713,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1710,
                      "name": "elements",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1704,
                      "src": "17296:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "36",
                      "id": 1711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17307:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_6_by_1",
                        "typeString": "int_const 6"
                      },
                      "value": "6"
                    },
                    "src": "17296:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17279:29:0"
                },
                {
                  "assignments": [
                    1717
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1717,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17318:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1715,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17318:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1716,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "17318:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1723,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1721,
                        "name": "inputSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1709,
                        "src": "17351:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1720,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "17340:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1718,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17344:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1719,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "17344:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 1722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17340:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17318:43:0"
                },
                {
                  "body": {
                    "id": 1820,
                    "nodeType": "Block",
                    "src": "17415:263:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1734,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17429:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1740,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1735,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17435:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17439:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17435:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17443:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "17435:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17429:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1741,
                                "name": "p1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1687,
                                "src": "17448:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                                  "typeString": "struct Pairing.G1Point memory[] memory"
                                }
                              },
                              "id": 1743,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1742,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1725,
                                "src": "17451:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17448:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            },
                            "id": 1744,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "X",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1446,
                            "src": "17448:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17429:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1746,
                        "nodeType": "ExpressionStatement",
                        "src": "17429:26:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1747,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17469:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1753,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1748,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17475:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1749,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17479:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17475:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17483:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "17475:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17469:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1754,
                                "name": "p1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1687,
                                "src": "17488:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                                  "typeString": "struct Pairing.G1Point memory[] memory"
                                }
                              },
                              "id": 1756,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1755,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1725,
                                "src": "17491:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17488:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            },
                            "id": 1757,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Y",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1448,
                            "src": "17488:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17469:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1759,
                        "nodeType": "ExpressionStatement",
                        "src": "17469:26:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1760,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17509:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1766,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1761,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17515:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1762,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17519:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17515:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17523:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "17515:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17509:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1767,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17528:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1769,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1768,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17531:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17528:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1770,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "X",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1453,
                              "src": "17528:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1772,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17536:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17528:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17509:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1774,
                        "nodeType": "ExpressionStatement",
                        "src": "17509:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1775,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17552:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1781,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1776,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17558:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17562:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17558:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 1779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17566:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "src": "17558:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17552:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1782,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17571:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1784,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1783,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17574:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17571:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "X",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1453,
                              "src": "17571:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1787,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17579:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17571:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17552:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1789,
                        "nodeType": "ExpressionStatement",
                        "src": "17552:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1790,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17595:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1796,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1791,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17601:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17605:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17601:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 1794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17609:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "17601:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17595:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1797,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17614:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1799,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1798,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17617:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17614:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "Y",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1457,
                              "src": "17614:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1802,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17622:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17614:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17595:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1804,
                        "nodeType": "ExpressionStatement",
                        "src": "17595:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1805,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1717,
                              "src": "17638:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1811,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1806,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17644:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 1807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17648:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                },
                                "src": "17644:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "35",
                                "id": 1809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17652:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "src": "17644:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17638:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1812,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1690,
                                  "src": "17657:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                                    "typeString": "struct Pairing.G2Point memory[] memory"
                                  }
                                },
                                "id": 1814,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1813,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1725,
                                  "src": "17660:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17657:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                                  "typeString": "struct Pairing.G2Point memory"
                                }
                              },
                              "id": 1815,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "Y",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1457,
                              "src": "17657:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                "typeString": "uint256[2] memory"
                              }
                            },
                            "id": 1817,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17665:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17657:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17638:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1819,
                        "nodeType": "ExpressionStatement",
                        "src": "17638:29:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1728,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1725,
                      "src": "17388:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1729,
                      "name": "elements",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1704,
                      "src": "17392:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17388:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1821,
                  "initializationExpression": {
                    "assignments": [
                      1725
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1725,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1843,
                        "src": "17376:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1724,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17376:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1727,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17385:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17376:10:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "17402:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1731,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1725,
                        "src": "17402:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1733,
                    "nodeType": "ExpressionStatement",
                    "src": "17402:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "17371:307:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1826,
                      "name": "out",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17687:18:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr",
                        "typeString": "uint256[1]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1824,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17687:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1825,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17692:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "1"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "17687:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$1_storage_ptr",
                          "typeString": "uint256[1]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1827,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17687:18:0"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1829,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1843,
                      "src": "17715:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1828,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "17715:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1830,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17715:12:0"
                },
                {
                  "externalReferences": [
                    {
                      "out": {
                        "declaration": 1826,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17838:3:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "input": {
                        "declaration": 1717,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17802:5:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "inputSize": {
                        "declaration": 1709,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17820:9:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1829,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17760:7:0",
                        "valueSize": 1
                      }
                    },
                    {
                      "success": {
                        "declaration": 1829,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "17925:7:0",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1831,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    success := call(sub(gas(), 2000), 8, 0, add(input, 0x20), mul(inputSize, 0x20), out, 0x20)\n    switch success\n    case 0 {\n        invalid()\n    }\n}",
                  "src": "17737:242:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1833,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1829,
                        "src": "17980:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1832,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "17972:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17972:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1835,
                  "nodeType": "ExpressionStatement",
                  "src": "17972:16:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1836,
                        "name": "out",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1826,
                        "src": "18005:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$1_memory_ptr",
                          "typeString": "uint256[1] memory"
                        }
                      },
                      "id": 1838,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18009:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "18005:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1839,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18015:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18005:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1694,
                  "id": 1841,
                  "nodeType": "Return",
                  "src": "17998:18:0"
                }
              ]
            },
            "documentation": "@return the result of computing the pairing check\n e(p1[0], p2[0]) *  .... * e(p1[n], p2[n]) == 1\n For example pairing([P1(), P1().negate()], [P2(), P2()]) should\n return true.",
            "id": 1843,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1687,
                  "name": "p1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1843,
                  "src": "17141:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                    "typeString": "struct Pairing.G1Point[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1685,
                      "name": "G1Point",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1449,
                      "src": "17141:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                        "typeString": "struct Pairing.G1Point"
                      }
                    },
                    "id": 1686,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "17141:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                      "typeString": "struct Pairing.G1Point[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1690,
                  "name": "p2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1843,
                  "src": "17155:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                    "typeString": "struct Pairing.G2Point[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1688,
                      "name": "G2Point",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1458,
                      "src": "17155:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                        "typeString": "struct Pairing.G2Point"
                      }
                    },
                    "id": 1689,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "17155:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                      "typeString": "struct Pairing.G2Point[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17140:28:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1693,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1843,
                  "src": "17187:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17187:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17186:6:0"
            },
            "scope": 2081,
            "src": "17124:899:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1905,
              "nodeType": "Block",
              "src": "18184:215:0",
              "statements": [
                {
                  "assignments": [
                    1859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1859,
                      "name": "p1",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "18194:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1857,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18194:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1858,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18194:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1865,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18230:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18216:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1860,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18220:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1861,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18220:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      }
                    },
                    "id": 1864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18216:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18194:38:0"
                },
                {
                  "assignments": [
                    1869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1869,
                      "name": "p2",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "18242:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G2Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1867,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18242:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1868,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18242:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1875,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18278:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18264:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1870,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18268:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1871,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18268:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      }
                    },
                    "id": 1874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18264:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory",
                      "typeString": "struct Pairing.G2Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18242:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1876,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1859,
                        "src": "18290:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1878,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18293:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18290:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1879,
                      "name": "a1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1845,
                      "src": "18298:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18290:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1881,
                  "nodeType": "ExpressionStatement",
                  "src": "18290:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1882,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1859,
                        "src": "18310:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1884,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18313:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18310:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1885,
                      "name": "b1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1849,
                      "src": "18318:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18310:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1887,
                  "nodeType": "ExpressionStatement",
                  "src": "18310:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1888,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1869,
                        "src": "18330:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1890,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18333:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18330:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1891,
                      "name": "a2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1847,
                      "src": "18338:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18330:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1893,
                  "nodeType": "ExpressionStatement",
                  "src": "18330:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1894,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1869,
                        "src": "18350:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1896,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18353:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18350:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1897,
                      "name": "b2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1851,
                      "src": "18358:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18350:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1899,
                  "nodeType": "ExpressionStatement",
                  "src": "18350:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1901,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1859,
                        "src": "18385:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1902,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1869,
                        "src": "18389:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      ],
                      "id": 1900,
                      "name": "pairing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1843,
                      "src": "18377:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) returns (bool)"
                      }
                    },
                    "id": 1903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18377:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1855,
                  "id": 1904,
                  "nodeType": "Return",
                  "src": "18370:22:0"
                }
              ]
            },
            "documentation": "Convenience method for a pairing check for two pairs.",
            "id": 1906,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairingProd2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1845,
                  "name": "a1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18112:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1844,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18112:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1847,
                  "name": "a2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18124:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1846,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18124:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1849,
                  "name": "b1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18136:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1848,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18136:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1851,
                  "name": "b2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18148:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1850,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18148:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18111:48:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1855,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1854,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1906,
                  "src": "18178:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1853,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18178:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18177:6:0"
            },
            "scope": 2081,
            "src": "18090:309:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1984,
              "nodeType": "Block",
              "src": "18628:255:0",
              "statements": [
                {
                  "assignments": [
                    1926
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1926,
                      "name": "p1",
                      "nodeType": "VariableDeclaration",
                      "scope": 1985,
                      "src": "18638:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1924,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18638:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1925,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18638:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1932,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 1930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18674:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 1929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18660:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1927,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "18664:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 1928,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18664:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      }
                    },
                    "id": 1931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18660:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18638:38:0"
                },
                {
                  "assignments": [
                    1936
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1936,
                      "name": "p2",
                      "nodeType": "VariableDeclaration",
                      "scope": 1985,
                      "src": "18686:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G2Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1934,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18686:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1935,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18686:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1942,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 1940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18722:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 1939,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "18708:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1937,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "18712:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 1938,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18712:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      }
                    },
                    "id": 1941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18708:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory",
                      "typeString": "struct Pairing.G2Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18686:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1943,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18734:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1945,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18737:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18734:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1946,
                      "name": "a1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1908,
                      "src": "18742:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18734:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1948,
                  "nodeType": "ExpressionStatement",
                  "src": "18734:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1953,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1949,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18754:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1951,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18757:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18754:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1952,
                      "name": "b1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1912,
                      "src": "18762:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18754:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1954,
                  "nodeType": "ExpressionStatement",
                  "src": "18754:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1955,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18774:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 1957,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18777:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18774:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1958,
                      "name": "c1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1916,
                      "src": "18782:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "18774:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 1960,
                  "nodeType": "ExpressionStatement",
                  "src": "18774:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1961,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18794:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1963,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18797:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18794:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1964,
                      "name": "a2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1910,
                      "src": "18802:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18794:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1966,
                  "nodeType": "ExpressionStatement",
                  "src": "18794:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1967,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18814:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1969,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18817:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18814:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1970,
                      "name": "b2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1914,
                      "src": "18822:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18814:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1972,
                  "nodeType": "ExpressionStatement",
                  "src": "18814:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1973,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18834:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 1975,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18837:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18834:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1976,
                      "name": "c2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1918,
                      "src": "18842:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "18834:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 1978,
                  "nodeType": "ExpressionStatement",
                  "src": "18834:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1980,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1926,
                        "src": "18869:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1981,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1936,
                        "src": "18873:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      ],
                      "id": 1979,
                      "name": "pairing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1843,
                      "src": "18861:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) returns (bool)"
                      }
                    },
                    "id": 1982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18861:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1922,
                  "id": 1983,
                  "nodeType": "Return",
                  "src": "18854:22:0"
                }
              ]
            },
            "documentation": "Convenience method for a pairing check for three pairs.",
            "id": 1985,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairingProd3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1908,
                  "name": "a1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18503:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1907,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18503:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1910,
                  "name": "a2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18515:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1909,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18515:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1912,
                  "name": "b1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18539:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1911,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18539:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1914,
                  "name": "b2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18551:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1913,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18551:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1916,
                  "name": "c1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18575:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1915,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18575:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1918,
                  "name": "c2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18587:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1917,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18587:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18489:114:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1921,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1985,
                  "src": "18622:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18622:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18621:6:0"
            },
            "scope": 2081,
            "src": "18468:415:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2079,
              "nodeType": "Block",
              "src": "19147:295:0",
              "statements": [
                {
                  "assignments": [
                    2009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2009,
                      "name": "p1",
                      "nodeType": "VariableDeclaration",
                      "scope": 2080,
                      "src": "19157:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G1Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2007,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "19157:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 2008,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19157:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2015,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 2013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19193:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 2012,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19179:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2010,
                          "name": "G1Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1449,
                          "src": "19183:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                            "typeString": "struct Pairing.G1Point"
                          }
                        },
                        "id": 2011,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19183:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G1Point[]"
                        }
                      }
                    },
                    "id": 2014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19179:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19157:38:0"
                },
                {
                  "assignments": [
                    2019
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2019,
                      "name": "p2",
                      "nodeType": "VariableDeclaration",
                      "scope": 2080,
                      "src": "19205:19:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                        "typeString": "struct Pairing.G2Point[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2017,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "19205:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 2018,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19205:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2025,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 2023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19241:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 2022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19227:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 2020,
                          "name": "G2Point",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1458,
                          "src": "19231:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                            "typeString": "struct Pairing.G2Point"
                          }
                        },
                        "id": 2021,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19231:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_storage_$dyn_storage_ptr",
                          "typeString": "struct Pairing.G2Point[]"
                        }
                      }
                    },
                    "id": 2024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19227:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory",
                      "typeString": "struct Pairing.G2Point memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19205:38:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2026,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19253:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2028,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19256:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19253:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "a1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1987,
                      "src": "19261:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19253:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2031,
                  "nodeType": "ExpressionStatement",
                  "src": "19253:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2032,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19273:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2034,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19276:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19273:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2035,
                      "name": "b1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1991,
                      "src": "19281:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19273:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "19273:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2038,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19293:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2040,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19296:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19293:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2041,
                      "name": "c1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1995,
                      "src": "19301:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19293:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2043,
                  "nodeType": "ExpressionStatement",
                  "src": "19293:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2044,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19313:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2046,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19316:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19313:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2047,
                      "name": "d1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1999,
                      "src": "19321:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "19313:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2049,
                  "nodeType": "ExpressionStatement",
                  "src": "19313:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2050,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19333:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2052,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19336:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19333:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2053,
                      "name": "a2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1989,
                      "src": "19341:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19333:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2055,
                  "nodeType": "ExpressionStatement",
                  "src": "19333:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2056,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19353:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2058,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19356:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19353:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2059,
                      "name": "b2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1993,
                      "src": "19361:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19353:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2061,
                  "nodeType": "ExpressionStatement",
                  "src": "19353:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2062,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19373:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2064,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19376:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19373:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2065,
                      "name": "c2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1997,
                      "src": "19381:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19373:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2067,
                  "nodeType": "ExpressionStatement",
                  "src": "19373:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2068,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19393:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      },
                      "id": 2070,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19396:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19393:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2071,
                      "name": "d2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2001,
                      "src": "19401:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "19393:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2073,
                  "nodeType": "ExpressionStatement",
                  "src": "19393:10:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2075,
                        "name": "p1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "19428:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2076,
                        "name": "p2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "19432:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr",
                          "typeString": "struct Pairing.G2Point memory[] memory"
                        }
                      ],
                      "id": 2074,
                      "name": "pairing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1843,
                      "src": "19420:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$1458_memory_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) returns (bool)"
                      }
                    },
                    "id": 2077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19420:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2005,
                  "id": 2078,
                  "nodeType": "Return",
                  "src": "19413:22:0"
                }
              ]
            },
            "documentation": "Convenience method for a pairing check for four pairs.",
            "id": 2080,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "pairingProd4",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1987,
                  "name": "a1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "18986:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1986,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "18986:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1989,
                  "name": "a2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "18998:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1988,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "18998:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1991,
                  "name": "b1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19022:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1990,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19022:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1993,
                  "name": "b2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19034:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1992,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "19034:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1995,
                  "name": "c1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19058:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1994,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19058:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1997,
                  "name": "c2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19070:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1996,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "19070:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1999,
                  "name": "d1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19094:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                    "typeString": "struct Pairing.G1Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1998,
                    "name": "G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19094:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2001,
                  "name": "d2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19106:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                    "typeString": "struct Pairing.G2Point"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2000,
                    "name": "G2Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1458,
                    "src": "19106:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                      "typeString": "struct Pairing.G2Point"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18972:150:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2004,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2080,
                  "src": "19141:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2003,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19141:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19140:6:0"
            },
            "scope": 2081,
            "src": "18951:491:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2704,
        "src": "14334:5110:0"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2703,
        "linearizedBaseContracts": [
          2703
        ],
        "name": "Verifier",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2083,
            "libraryName": {
              "contractScope": null,
              "id": 2082,
              "name": "Pairing",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2081,
              "src": "19475:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Pairing_$2081",
                "typeString": "library Pairing"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "19469:20:0",
            "typeName": null
          },
          {
            "canonicalName": "Verifier.VerifyingKey",
            "id": 2101,
            "members": [
              {
                "constant": false,
                "id": 2085,
                "name": "A",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19524:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2084,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19524:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2087,
                "name": "B",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19551:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2086,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19551:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2089,
                "name": "C",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19578:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2088,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19578:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2091,
                "name": "gamma",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19605:21:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2090,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19605:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2093,
                "name": "gammaBeta1",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19636:26:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2092,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19636:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2095,
                "name": "gammaBeta2",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19672:26:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2094,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19672:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2097,
                "name": "Z",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19708:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2096,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19708:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2100,
                "name": "IC",
                "nodeType": "VariableDeclaration",
                "scope": 2101,
                "src": "19735:20:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                  "typeString": "struct Pairing.G1Point[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 2098,
                    "name": "Pairing.G1Point",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1449,
                    "src": "19735:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                      "typeString": "struct Pairing.G1Point"
                    }
                  },
                  "id": 2099,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "19735:17:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                    "typeString": "struct Pairing.G1Point[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "VerifyingKey",
            "nodeType": "StructDefinition",
            "scope": 2703,
            "src": "19494:268:0",
            "visibility": "public"
          },
          {
            "canonicalName": "Verifier.Proof",
            "id": 2118,
            "members": [
              {
                "constant": false,
                "id": 2103,
                "name": "A",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19790:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2102,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19790:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2105,
                "name": "A_p",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19817:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2104,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19817:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2107,
                "name": "B",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19846:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                  "typeString": "struct Pairing.G2Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2106,
                  "name": "Pairing.G2Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1458,
                  "src": "19846:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G2Point_$1458_storage_ptr",
                    "typeString": "struct Pairing.G2Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2109,
                "name": "B_p",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19873:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2108,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19873:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2111,
                "name": "C",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19902:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2110,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19902:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2113,
                "name": "C_p",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19929:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2112,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19929:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2115,
                "name": "K",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19958:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2114,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19958:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2117,
                "name": "H",
                "nodeType": "VariableDeclaration",
                "scope": 2118,
                "src": "19985:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                  "typeString": "struct Pairing.G1Point"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2116,
                  "name": "Pairing.G1Point",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1449,
                  "src": "19985:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                    "typeString": "struct Pairing.G1Point"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proof",
            "nodeType": "StructDefinition",
            "scope": 2703,
            "src": "19767:242:0",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2271,
              "nodeType": "Block",
              "src": "20078:2623:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2123,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20088:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2125,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "A",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2085,
                      "src": "20088:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307831363733636165323464653132383333313166363035656438346465306263313464373935383236303332343435363763353838336532643637363430636132",
                              "id": 2128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20112:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10155470335193043899967449356054645331154805989922742064428468199205739170978_by_1",
                                "typeString": "int_const 1015...(69 digits omitted)...0978"
                              },
                              "value": "0x1673cae24de1283311f605ed84de0bc14d79582603244567c5883e2d67640ca2"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832333035326237656262363166613837303365656137613335626638393837303835653137343332366463383139383864393736623737313330356234616465",
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20180:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_15840084127518112179489186478509732000818622869921784358890313692544086264542_by_1",
                                "typeString": "int_const 1584...(69 digits omitted)...4542"
                              },
                              "value": "0x23052b7ebb61fa8703eea7a35bf8987085e174326dc81988d976b771305b4ade"
                            }
                          ],
                          "id": 2130,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20111:136:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307832373431646462626639353964383435613934393033663939396435643136396663383438343639303039343830613736623730646439636331363565633163",
                              "id": 2131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20250:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_17756576507670372237508798715174972532515462324644343507105218991645847317532_by_1",
                                "typeString": "int_const 1775...(69 digits omitted)...7532"
                              },
                              "value": "0x2741ddbbf959d845a94903f999d5d169fc848469009480a76b70dd9cc165ec1c"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30783130383761623436333733653063643037353266626331666638333331656566366637333838366163663961663038616163326230666662666530303061",
                              "id": 2132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20318:64:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_29205906338736773201545267460801375327534990793537589728106946308639424522_by_1",
                                "typeString": "int_const 2920...(66 digits omitted)...4522"
                              },
                              "value": "0x1087ab46373e0cd0752fbc1ff8331eef6f73886acf9af08aac2b0ffbfe000a"
                            }
                          ],
                          "id": 2133,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20249:134:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2126,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20095:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "20095:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20095:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "20088:296:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2136,
                  "nodeType": "ExpressionStatement",
                  "src": "20088:296:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2137,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20394:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2139,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "B",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2087,
                      "src": "20394:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307832623637623662653531373264303330306635633132386263316134333366396532306666356461363833656265663236613336646231666666316537653439",
                          "id": 2142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20417:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_19632698985555137977058386024346696503511293280354378848585657753095104265801_by_1",
                            "typeString": "int_const 1963...(69 digits omitted)...5801"
                          },
                          "value": "0x2b67b6be5172d0300f5c128bc1a433f9e20ff5da683ebef26a36db1fff1e7e49"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307832393639316333346562663163633730326535646563303235373033653437663066353130636131363566363837336562646230636566386130623732353865",
                          "id": 2143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20485:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18730540409378447816754731686510907418175650667496088392338522709404662834574_by_1",
                            "typeString": "int_const 1873...(69 digits omitted)...4574"
                          },
                          "value": "0x29691c34ebf1cc702e5dec025703e47f0f510ca165f6873ebdb0cef8a0b7258e"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_19632698985555137977058386024346696503511293280354378848585657753095104265801_by_1",
                            "typeString": "int_const 1963...(69 digits omitted)...5801"
                          },
                          {
                            "typeIdentifier": "t_rational_18730540409378447816754731686510907418175650667496088392338522709404662834574_by_1",
                            "typeString": "int_const 1873...(69 digits omitted)...4574"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2140,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20401:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "20401:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20401:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "20394:158:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2146,
                  "nodeType": "ExpressionStatement",
                  "src": "20394:158:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2147,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20562:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "C",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2089,
                      "src": "20562:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078373037366639373634343633393865363234356463336232376265373631633237393832333637366438326564383661373533346166353831323432653665",
                              "id": 2152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20586:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3179328044892871887082819712665797410409566266315297415625243868252455841390_by_1",
                                "typeString": "int_const 3179...(68 digits omitted)...1390"
                              },
                              "value": "0x7076f976446398e6245dc3b27be761c279823676d82ed86a7534af581242e6e"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078346333653833393733623732383030346338636237316435653565356566333935636439346130653536353239386662353866396561313264366137376461",
                              "id": 2153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20653:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2155389326020525590927477244112210816984612177182921662073582496132004214746_by_1",
                                "typeString": "int_const 2155...(68 digits omitted)...4746"
                              },
                              "value": "0x4c3e83973b728004c8cb71d5e5e5ef395cd94a0e565298fb58f9ea12d6a77da"
                            }
                          ],
                          "id": 2154,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20585:134:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078366133653264643764383866616537633035626538316438613138653039343131633532303266333363623937313962366566373662393966366462333032",
                              "id": 2155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20722:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3003438929101449886426141509168464409874695740240337038988854891933418238722_by_1",
                                "typeString": "int_const 3003...(68 digits omitted)...8722"
                              },
                              "value": "0x6a3e2dd7d88fae7c05be81d8a18e09411c5202f33cb9719b6ef76b99f6db302"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832306632616330613034316162343362653439353038396365646663303739373239323064633966393232303835333730313365613165636336313963646262",
                              "id": 2156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20789:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_14902775514744242655281971758385015395265960769856031042736821363002327027131_by_1",
                                "typeString": "int_const 1490...(69 digits omitted)...7131"
                              },
                              "value": "0x20f2ac0a041ab43be495089cedfc07972920dc9f92208537013ea1ecc619cdbb"
                            }
                          ],
                          "id": 2157,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20721:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2150,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20569:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "20569:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20569:288:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "20562:295:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2160,
                  "nodeType": "ExpressionStatement",
                  "src": "20562:295:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2161,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "20867:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2163,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "gamma",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2091,
                      "src": "20867:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078333861383665643939366336656366303865616631393461643862376438333032333133353763636661313533343363323063326134326336336235316564",
                              "id": 2166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20895:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1601694680364433563952127533548097685106189379282300651557634075520040391149_by_1",
                                "typeString": "int_const 1601...(68 digits omitted)...1149"
                              },
                              "value": "0x38a86ed996c6ecf08eaf194ad8b7d830231357ccfa15343c20c2a42c63b51ed"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307831386534303665666434373265383631663337366536386361646165383632626531343432613136643332346230643132333532663461613332663564363831",
                              "id": 2167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20962:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_11258397373046675278583052655416299063128020299552373016068127609470873622145_by_1",
                                "typeString": "int_const 1125...(69 digits omitted)...2145"
                              },
                              "value": "0x18e406efd472e861f376e68cadae862be1442a16d324b0d12352f4aa32f5d681"
                            }
                          ],
                          "id": 2168,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20894:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078663736356630653738353566636362636238643738333963656261333134373034326161616162306230326438326430336630303137363931616335303334",
                              "id": 2169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21032:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6993836738407891819859294131779571192395854438452877608488246875128498769972_by_1",
                                "typeString": "int_const 6993...(68 digits omitted)...9972"
                              },
                              "value": "0xf765f0e7855fccbcb8d7839ceba3147042aaaab0b02d82d03f0017691ac5034"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832633365393437646235343332366462373038663264353663653535356266653431383261396634636461343035343138643261643232626338383964313938",
                              "id": 2170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21099:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20012334703221788748565830706995734860809865671795226051363148881286337778072_by_1",
                                "typeString": "int_const 2001...(69 digits omitted)...8072"
                              },
                              "value": "0x2c3e947db54326db708f2d56ce555bfe4182a9f4cda405418d2ad22bc889d198"
                            }
                          ],
                          "id": 2171,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21031:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2164,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "20878:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "20878:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20878:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "20867:300:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2174,
                  "nodeType": "ExpressionStatement",
                  "src": "20867:300:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2175,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21177:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2177,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "gammaBeta1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2093,
                      "src": "21177:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307832393133616265333165303430366232366465316434643366316134633331353436313463373131323238666430623734356166333334356237383239326466",
                          "id": 2180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21209:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18579583207838930871431971782913971855717525480027816921329570516371576623839_by_1",
                            "typeString": "int_const 1857...(69 digits omitted)...3839"
                          },
                          "value": "0x2913abe31e0406b26de1d4d3f1a4c3154614c711228fd0b745af3345b78292df"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307831363964353235353535623838363663373365343666663133623432363732643435346230613031393162636233646337656336323939376133386662326435",
                          "id": 2181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21277:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10228845901825424429923387641439657153504134152474373128073332384677699236565_by_1",
                            "typeString": "int_const 1022...(69 digits omitted)...6565"
                          },
                          "value": "0x169d525555b8866c73e46ff13b42672d454b0a0191bcb3dc7ec62997a38fb2d5"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_18579583207838930871431971782913971855717525480027816921329570516371576623839_by_1",
                            "typeString": "int_const 1857...(69 digits omitted)...3839"
                          },
                          {
                            "typeIdentifier": "t_rational_10228845901825424429923387641439657153504134152474373128073332384677699236565_by_1",
                            "typeString": "int_const 1022...(69 digits omitted)...6565"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2178,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "21193:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "21193:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2182,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21193:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "21177:167:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2184,
                  "nodeType": "ExpressionStatement",
                  "src": "21177:167:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2185,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21354:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2187,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "gammaBeta2",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2095,
                      "src": "21354:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3078616561633863633166323932333935366662643839666334646261373536346531313864656134653833333263663033633539313364626262323933613330",
                              "id": 2190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21387:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4937956551370888672641127377843757018661713293527179611805391198392855116336_by_1",
                                "typeString": "int_const 4937...(68 digits omitted)...6336"
                              },
                              "value": "0xaeac8cc1f2923956fbd89fc4dba7564e118dea4e8332cf03c5913dbbb293a30"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078383136663638336464313837646266363033363031353364386261353062396430333436343562393864366137643661323335343265333835316237613037",
                              "id": 2191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21454:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3659074808729670992299063026899000140507854647659546133829445564595028326919_by_1",
                                "typeString": "int_const 3659...(68 digits omitted)...6919"
                              },
                              "value": "0x816f683dd187dbf60360153d8ba50b9d034645b98d6a7d6a23542e3851b7a07"
                            }
                          ],
                          "id": 2192,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21386:134:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307832636364663636326261323430393739343066363730656538386536626330356162353462376662633138323933646336653233356438373166303765626630",
                              "id": 2193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21523:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20265669477222284750377363561804518071631770952828813935558749963100831083504_by_1",
                                "typeString": "int_const 2026...(69 digits omitted)...3504"
                              },
                              "value": "0x2ccdf662ba24097940f670ee88e6bc05ab54b7fbc18293dc6e235d871f07ebf0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "307832623139316638633663306431346562636263316535346337643163653362356330623230636365313939363035613866626562643665326436353536636465",
                              "id": 2194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21591:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_19493841405608307225750883170252584959851876729933783019143171216052021718238_by_1",
                                "typeString": "int_const 1949...(69 digits omitted)...8238"
                              },
                              "value": "0x2b191f8c6c0d14ebcbc1e54c7d1ce3b5c0b20cce199605a8fbebd6e2d6556cde"
                            }
                          ],
                          "id": 2195,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21522:136:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2188,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "21370:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "21370:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2196,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21370:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "21354:305:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2198,
                  "nodeType": "ExpressionStatement",
                  "src": "21354:305:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2199,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21669:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2201,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "Z",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2097,
                      "src": "21669:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307831376264633163323532396463386230363866306464333964393533613930373430623035666362323139313538623335633066316538623633663866393732",
                              "id": 2204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21693:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10738466888633342042561240641368616844171219486666594497776829006530756540786_by_1",
                                "typeString": "int_const 1073...(69 digits omitted)...0786"
                              },
                              "value": "0x17bdc1c2529dc8b068f0dd39d953a90740b05fcb219158b35c0f1e8b63f8f972"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078343561343661643530386534643537663764336333306665306562393162343563373262316237623165343239343733656337653332393563626131623834",
                              "id": 2205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21761:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1968755424961691931365040141169456574909179851585597795510588926947151715204_by_1",
                                "typeString": "int_const 1968...(68 digits omitted)...5204"
                              },
                              "value": "0x45a46ad508e4d57f7d3c30fe0eb91b45c72b1b7b1e429473ec7e3295cba1b84"
                            }
                          ],
                          "id": 2206,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21692:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "307831653666393437363938366532366261633561333263373931643331383837663634633732636530626339376538653933346166623432363536303061306337",
                              "id": 2207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21830:66:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_13766530137474205983979191993154029249458966706875751186863639683325960954055_by_1",
                                "typeString": "int_const 1376...(69 digits omitted)...4055"
                              },
                              "value": "0x1e6f9476986e26bac5a32c791d31887f64c72ce0bc97e8e934afb4265600a0c7"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3078613761393631363863393939346532363039633036343937396639393362663430353731313837363864353931353134363866633236333639643031643133",
                              "id": 2208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21898:65:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4739719697613372664564536724363701019563625358524678842867070879409378434323_by_1",
                                "typeString": "int_const 4739...(68 digits omitted)...4323"
                              },
                              "value": "0xa7a96168c9994e2609c064979f993bf4057118768d59151468fc26369d01d13"
                            }
                          ],
                          "id": 2209,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21829:135:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2202,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "21676:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "21676:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21676:289:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "21669:296:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2212,
                  "nodeType": "ExpressionStatement",
                  "src": "21669:296:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2213,
                        "name": "vk",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "21975:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                          "typeString": "struct Verifier.VerifyingKey memory"
                        }
                      },
                      "id": 2215,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "IC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2100,
                      "src": "21975:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                        "typeString": "struct Pairing.G1Point memory[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "34",
                          "id": 2219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22005:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          }
                        ],
                        "id": 2218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "21983:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 2216,
                            "name": "Pairing.G1Point",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1449,
                            "src": "21987:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                              "typeString": "struct Pairing.G1Point"
                            }
                          },
                          "id": 2217,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21987:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_storage_$dyn_storage_ptr",
                            "typeString": "struct Pairing.G1Point[]"
                          }
                        }
                      },
                      "id": 2220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21983:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                        "typeString": "struct Pairing.G1Point memory[] memory"
                      }
                    },
                    "src": "21975:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                      "typeString": "struct Pairing.G1Point memory[] memory"
                    }
                  },
                  "id": 2222,
                  "nodeType": "ExpressionStatement",
                  "src": "21975:32:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2223,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22017:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2226,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22017:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2227,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22023:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22017:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "3078343566323534386138306637316663386633633837393964316236316336663238373964666537316663363764623166376135306361313331333530623833",
                          "id": 2230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22044:65:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1977359188916822162258258066659292590665902751695311268234202332400079670147_by_1",
                            "typeString": "int_const 1977...(68 digits omitted)...0147"
                          },
                          "value": "0x45f2548a80f71fc8f3c8799d1b61c6f2879dfe71fc67db1f7a50ca131350b83"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307832323262623136326636373037303938363636336561353263313535663233336231303036383733663730643737663366333963666363363530343962373466",
                          "id": 2231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22111:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_15455835552747761853179264260301127686028872001745730928270167858515666384719_by_1",
                            "typeString": "int_const 1545...(69 digits omitted)...4719"
                          },
                          "value": "0x222bb162f67070986663ea52c155f233b1006873f70d77f3f39cfcc65049b74f"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1977359188916822162258258066659292590665902751695311268234202332400079670147_by_1",
                            "typeString": "int_const 1977...(68 digits omitted)...0147"
                          },
                          {
                            "typeIdentifier": "t_rational_15455835552747761853179264260301127686028872001745730928270167858515666384719_by_1",
                            "typeString": "int_const 1545...(69 digits omitted)...4719"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2228,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22028:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22028:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22028:150:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22017:161:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2234,
                  "nodeType": "ExpressionStatement",
                  "src": "22017:161:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2235,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22188:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2238,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22188:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22194:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22188:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307831383435363964636266653261666335383034313139633935663231623762353264646438616639393439343334356631333837613138633665376565323335",
                          "id": 2242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22215:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10978151448230682792114107122126562463954986294976692388317631577052007031349_by_1",
                            "typeString": "int_const 1097...(69 digits omitted)...1349"
                          },
                          "value": "0x184569dcbfe2afc5804119c95f21b7b52ddd8af99494345f1387a18c6e7ee235"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307831356237353631336361373131643563363934653764356266666436356534623330646266393865326565366461333861316632613539306136356161613637",
                          "id": 2243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22283:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_9822496916847464754573055571196298264754486762992026082420083290122636405351_by_1",
                            "typeString": "int_const 9822...(68 digits omitted)...5351"
                          },
                          "value": "0x15b75613ca711d5c694e7d5bffd65e4b30dbf98e2ee6da38a1f2a590a65aaa67"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_10978151448230682792114107122126562463954986294976692388317631577052007031349_by_1",
                            "typeString": "int_const 1097...(69 digits omitted)...1349"
                          },
                          {
                            "typeIdentifier": "t_rational_9822496916847464754573055571196298264754486762992026082420083290122636405351_by_1",
                            "typeString": "int_const 9822...(68 digits omitted)...5351"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2240,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22199:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22199:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22199:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22188:162:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2246,
                  "nodeType": "ExpressionStatement",
                  "src": "22188:162:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2247,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22360:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2250,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22360:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2251,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22366:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22360:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307831613035303832636137316361343337306563376531313266333666646563656632656231356537336261396138323538363430663530653734376235333961",
                          "id": 2254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22387:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_11769024716296180822485371261998766457484876248055919831496543686113128829850_by_1",
                            "typeString": "int_const 1176...(69 digits omitted)...9850"
                          },
                          "value": "0x1a05082ca71ca4370ec7e112f36fdecef2eb15e73ba9a8258640f50e747b539a"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307832383765363465623938373239636263313466303239653236343361373762633735666264393839643639323961366663326134613262303438303839336538",
                          "id": 2255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22455:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18315833199769494873687336197482622644348730654307476799148074697163243295720_by_1",
                            "typeString": "int_const 1831...(69 digits omitted)...5720"
                          },
                          "value": "0x287e64eb98729cbc14f029e2643a77bc75fbd989d6929a6fc2a4a2b0480893e8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_11769024716296180822485371261998766457484876248055919831496543686113128829850_by_1",
                            "typeString": "int_const 1176...(69 digits omitted)...9850"
                          },
                          {
                            "typeIdentifier": "t_rational_18315833199769494873687336197482622644348730654307476799148074697163243295720_by_1",
                            "typeString": "int_const 1831...(69 digits omitted)...5720"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2252,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22371:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22371:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22371:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22360:162:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2258,
                  "nodeType": "ExpressionStatement",
                  "src": "22360:162:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2259,
                          "name": "vk",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2121,
                          "src": "22532:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                            "typeString": "struct Verifier.VerifyingKey memory"
                          }
                        },
                        "id": 2262,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "IC",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2100,
                        "src": "22532:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                          "typeString": "struct Pairing.G1Point memory[] memory"
                        }
                      },
                      "id": 2263,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 2261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22538:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22532:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307831646133653164636134303162643639323033626132323463303430336366613735393065333630633831366433656231363135313835616562363963656533",
                          "id": 2266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22559:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_13406627521861828139500511329019306350057503823273844478021366042249487044323_by_1",
                            "typeString": "int_const 1340...(69 digits omitted)...4323"
                          },
                          "value": "0x1da3e1dca401bd69203ba224c0403cfa7590e360c816d3eb1615185aeb69cee3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "307831393338336563326539653864346236316438303439313139373165383566343765373134383962383833313634623733313961336562313866633731633138",
                          "id": 2267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22627:66:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_11407197813345948711088428215974436686095004968534768815004261762014246280216_by_1",
                            "typeString": "int_const 1140...(69 digits omitted)...0216"
                          },
                          "value": "0x19383ec2e9e8d4b61d804911971e85f47e71489b883164b7319a3eb18fc71c18"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_13406627521861828139500511329019306350057503823273844478021366042249487044323_by_1",
                            "typeString": "int_const 1340...(69 digits omitted)...4323"
                          },
                          {
                            "typeIdentifier": "t_rational_11407197813345948711088428215974436686095004968534768815004261762014246280216_by_1",
                            "typeString": "int_const 1140...(69 digits omitted)...0216"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2264,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "22543:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "22543:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22543:151:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "22532:162:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2270,
                  "nodeType": "ExpressionStatement",
                  "src": "22532:162:0"
                }
              ]
            },
            "documentation": null,
            "id": 2272,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "verifyingKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20035:2:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2121,
                  "name": "vk",
                  "nodeType": "VariableDeclaration",
                  "scope": 2272,
                  "src": "20061:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                    "typeString": "struct Verifier.VerifyingKey"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2120,
                    "name": "VerifyingKey",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2101,
                    "src": "20061:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VerifyingKey_$2101_storage_ptr",
                      "typeString": "struct Verifier.VerifyingKey"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20060:17:0"
            },
            "scope": 2703,
            "src": "20014:2687:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2473,
              "nodeType": "Block",
              "src": "22773:1176:0",
              "statements": [
                {
                  "assignments": [
                    2283
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2283,
                      "name": "vk",
                      "nodeType": "VariableDeclaration",
                      "scope": 2474,
                      "src": "22783:22:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                        "typeString": "struct Verifier.VerifyingKey"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2282,
                        "name": "VerifyingKey",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2101,
                        "src": "22783:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VerifyingKey_$2101_storage_ptr",
                          "typeString": "struct Verifier.VerifyingKey"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2286,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2284,
                      "name": "verifyingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2272,
                      "src": "22808:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_VerifyingKey_$2101_memory_ptr_$",
                        "typeString": "function () pure returns (struct Verifier.VerifyingKey memory)"
                      }
                    },
                    "id": 2285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22808:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                      "typeString": "struct Verifier.VerifyingKey memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22783:39:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2288,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2275,
                              "src": "22840:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "22840:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22855:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "22840:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2292,
                              "name": "vk",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2283,
                              "src": "22860:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                "typeString": "struct Verifier.VerifyingKey memory"
                              }
                            },
                            "id": 2293,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "IC",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2100,
                            "src": "22860:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                              "typeString": "struct Pairing.G1Point memory[] memory"
                            }
                          },
                          "id": 2294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22860:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22840:32:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2721,
                        2722
                      ],
                      "referencedDeclaration": 2721,
                      "src": "22832:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22832:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2297,
                  "nodeType": "ExpressionStatement",
                  "src": "22832:41:0"
                },
                {
                  "assignments": [
                    2301
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2301,
                      "name": "vk_x",
                      "nodeType": "VariableDeclaration",
                      "scope": 2474,
                      "src": "22930:27:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2300,
                        "name": "Pairing.G1Point",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1449,
                        "src": "22930:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_storage_ptr",
                          "typeString": "struct Pairing.G1Point"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2307,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22976:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22979:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2302,
                        "name": "Pairing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2081,
                        "src": "22960:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                          "typeString": "type(library Pairing)"
                        }
                      },
                      "id": 2303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "G1Point",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1449,
                      "src": "22960:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                        "typeString": "type(struct Pairing.G1Point storage pointer)"
                      }
                    },
                    "id": 2306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22960:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22930:51:0"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2336,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2319,
                        "name": "vk_x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2301,
                        "src": "23043:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2322,
                            "name": "vk_x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2301,
                            "src": "23067:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2325,
                                    "name": "vk",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2283,
                                    "src": "23092:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                      "typeString": "struct Verifier.VerifyingKey memory"
                                    }
                                  },
                                  "id": 2326,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "IC",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "23092:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                                    "typeString": "struct Pairing.G1Point memory[] memory"
                                  }
                                },
                                "id": 2330,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2329,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2327,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2309,
                                    "src": "23098:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23102:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "23098:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "23092:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                  "typeString": "struct Pairing.G1Point memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2331,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2275,
                                  "src": "23106:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2333,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2332,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2309,
                                  "src": "23112:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "23106:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                  "typeString": "struct Pairing.G1Point memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2323,
                                "name": "Pairing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2081,
                                "src": "23073:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                  "typeString": "type(library Pairing)"
                                }
                              },
                              "id": 2324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "scalar_mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1684,
                              "src": "23073:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_uint256_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                                "typeString": "function (struct Pairing.G1Point memory,uint256) returns (struct Pairing.G1Point memory)"
                              }
                            },
                            "id": 2334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23073:42:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            },
                            {
                              "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                              "typeString": "struct Pairing.G1Point memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2320,
                            "name": "Pairing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2081,
                            "src": "23050:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                              "typeString": "type(library Pairing)"
                            }
                          },
                          "id": 2321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addition",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1575,
                          "src": "23050:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                            "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                          }
                        },
                        "id": 2335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23050:66:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                          "typeString": "struct Pairing.G1Point memory"
                        }
                      },
                      "src": "23043:73:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "id": 2337,
                    "nodeType": "ExpressionStatement",
                    "src": "23043:73:0"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2312,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2309,
                      "src": "23008:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2313,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2275,
                        "src": "23012:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "23012:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23008:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2338,
                  "initializationExpression": {
                    "assignments": [
                      2309
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2309,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2474,
                        "src": "22996:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2308,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22996:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2311,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23005:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22996:10:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "23026:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2316,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2309,
                        "src": "23026:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2318,
                    "nodeType": "ExpressionStatement",
                    "src": "23026:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "22991:125:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2339,
                      "name": "vk_x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2301,
                      "src": "23126:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2342,
                          "name": "vk_x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2301,
                          "src": "23150:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2343,
                              "name": "vk",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2283,
                              "src": "23156:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                "typeString": "struct Verifier.VerifyingKey memory"
                              }
                            },
                            "id": 2344,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "IC",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2100,
                            "src": "23156:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_G1Point_$1449_memory_$dyn_memory",
                              "typeString": "struct Pairing.G1Point memory[] memory"
                            }
                          },
                          "id": 2346,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23162:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23156:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2340,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23133:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addition",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1575,
                        "src": "23133:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                        }
                      },
                      "id": 2347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23133:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "23126:39:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2349,
                  "nodeType": "ExpressionStatement",
                  "src": "23126:39:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23179:77:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2352,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23201:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2353,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "A",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2103,
                          "src": "23201:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2354,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23210:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2355,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "A",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2085,
                          "src": "23210:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2358,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23231:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2359,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "A_p",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2105,
                              "src": "23231:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2356,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23216:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23216:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23216:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2361,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23243:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23243:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23243:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2350,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23180:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1906,
                        "src": "23180:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23180:76:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2368,
                  "nodeType": "IfStatement",
                  "src": "23175:91:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2366,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23265:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2367,
                    "nodeType": "Return",
                    "src": "23258:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23280:77:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2371,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23302:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2372,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2087,
                          "src": "23302:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2373,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23308:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2374,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2107,
                          "src": "23308:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2377,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23332:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2378,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "B_p",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2109,
                              "src": "23332:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2375,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23317:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23317:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23317:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2380,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23344:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23344:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23344:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2369,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23281:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1906,
                        "src": "23281:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2383,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23281:76:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2387,
                  "nodeType": "IfStatement",
                  "src": "23276:91:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23366:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2386,
                    "nodeType": "Return",
                    "src": "23359:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23381:77:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2390,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23403:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2391,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "C",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2111,
                          "src": "23403:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2392,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23412:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2393,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "C",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2089,
                          "src": "23412:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2396,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23433:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2397,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "C_p",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2113,
                              "src": "23433:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2394,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23418:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23418:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23418:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2399,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23445:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23445:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23445:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2388,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23382:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1906,
                        "src": "23382:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23382:76:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2406,
                  "nodeType": "IfStatement",
                  "src": "23377:91:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 2404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23467:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2405,
                    "nodeType": "Return",
                    "src": "23460:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23482:217:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2409,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23517:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2410,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "K",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2115,
                          "src": "23517:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2411,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23526:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2412,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "gamma",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2091,
                          "src": "23526:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2417,
                                  "name": "vk_x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2301,
                                  "src": "23580:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2420,
                                        "name": "proof",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2277,
                                        "src": "23603:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                          "typeString": "struct Verifier.Proof memory"
                                        }
                                      },
                                      "id": 2421,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "A",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2103,
                                      "src": "23603:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2422,
                                        "name": "proof",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2277,
                                        "src": "23612:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                          "typeString": "struct Verifier.Proof memory"
                                        }
                                      },
                                      "id": 2423,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "C",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2111,
                                      "src": "23612:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      },
                                      {
                                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                        "typeString": "struct Pairing.G1Point memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2418,
                                      "name": "Pairing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2081,
                                      "src": "23586:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                        "typeString": "type(library Pairing)"
                                      }
                                    },
                                    "id": 2419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "addition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1575,
                                    "src": "23586:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                                      "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                                    }
                                  },
                                  "id": 2424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23586:34:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                    "typeString": "struct Pairing.G1Point memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2415,
                                  "name": "Pairing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2081,
                                  "src": "23563:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                    "typeString": "type(library Pairing)"
                                  }
                                },
                                "id": 2416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "addition",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1575,
                                "src": "23563:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                                  "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                                }
                              },
                              "id": 2425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23563:58:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2413,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23548:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23548:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23548:74:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2427,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23624:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2428,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "gammaBeta2",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2095,
                          "src": "23624:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2431,
                                "name": "vk",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2283,
                                "src": "23666:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                                  "typeString": "struct Verifier.VerifyingKey memory"
                                }
                              },
                              "id": 2432,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gammaBeta1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2093,
                              "src": "23666:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2429,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23651:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23651:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23651:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2434,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23682:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2435,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2107,
                          "src": "23682:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2407,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23483:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd3",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1985,
                        "src": "23483:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2436,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23483:216:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2440,
                  "nodeType": "IfStatement",
                  "src": "23478:231:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "34",
                      "id": 2438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23708:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2439,
                    "nodeType": "Return",
                    "src": "23701:8:0"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23723:191:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2445,
                              "name": "vk_x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2301,
                              "src": "23779:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2446,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23785:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2447,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "A",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2103,
                              "src": "23785:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                                "typeString": "struct Pairing.G1Point memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2443,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23762:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "addition",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1575,
                            "src": "23762:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23762:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2449,
                            "name": "proof",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "23795:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                              "typeString": "struct Verifier.Proof memory"
                            }
                          },
                          "id": 2450,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "B",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2107,
                          "src": "23795:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2453,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23835:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2454,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "H",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2117,
                              "src": "23835:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2451,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23820:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23820:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23820:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2456,
                            "name": "vk",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2283,
                            "src": "23845:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VerifyingKey_$2101_memory_ptr",
                              "typeString": "struct Verifier.VerifyingKey memory"
                            }
                          },
                          "id": 2457,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "Z",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2097,
                          "src": "23845:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2460,
                                "name": "proof",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "23882:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                                  "typeString": "struct Verifier.Proof memory"
                                }
                              },
                              "id": 2461,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "C",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2111,
                              "src": "23882:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                                "typeString": "struct Pairing.G1Point memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2458,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23867:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "negate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1523,
                            "src": "23867:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_G1Point_$1449_memory_ptr_$returns$_t_struct$_G1Point_$1449_memory_ptr_$",
                              "typeString": "function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"
                            }
                          },
                          "id": 2462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23867:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2463,
                              "name": "Pairing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2081,
                              "src": "23892:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                                "typeString": "type(library Pairing)"
                              }
                            },
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "P2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1484,
                            "src": "23892:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_G2Point_$1458_memory_ptr_$",
                              "typeString": "function () pure returns (struct Pairing.G2Point memory)"
                            }
                          },
                          "id": 2465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23892:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                            "typeString": "struct Pairing.G2Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G1Point_$1449_memory_ptr",
                            "typeString": "struct Pairing.G1Point memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_G2Point_$1458_memory_ptr",
                            "typeString": "struct Pairing.G2Point memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2441,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "23724:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pairingProd3",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1985,
                        "src": "23724:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$_t_struct$_G1Point_$1449_memory_ptr_$_t_struct$_G2Point_$1458_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) returns (bool)"
                        }
                      },
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23724:190:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2470,
                  "nodeType": "IfStatement",
                  "src": "23719:205:0",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "35",
                      "id": 2468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23923:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5_by_1",
                        "typeString": "int_const 5"
                      },
                      "value": "5"
                    },
                    "functionReturnParameters": 2281,
                    "id": 2469,
                    "nodeType": "Return",
                    "src": "23916:8:0"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "23941:1:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 2281,
                  "id": 2472,
                  "nodeType": "Return",
                  "src": "23934:8:0"
                }
              ]
            },
            "documentation": null,
            "id": 2474,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2275,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 2474,
                  "src": "22722:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2273,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "22722:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2274,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "22722:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2277,
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 2474,
                  "src": "22736:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                    "typeString": "struct Verifier.Proof"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2276,
                    "name": "Proof",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2118,
                    "src": "22736:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proof_$2118_storage_ptr",
                      "typeString": "struct Verifier.Proof"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22721:27:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2280,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2474,
                  "src": "22767:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2279,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22767:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22766:6:0"
            },
            "scope": 2703,
            "src": "22706:1243:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2478,
            "name": "Verified",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2476,
                  "indexed": false,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 2478,
                  "src": "23969:8:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2475,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23969:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23968:10:0"
            },
            "src": "23954:25:0"
          },
          {
            "body": {
              "id": 2701,
              "nodeType": "Block",
              "src": "24256:806:0",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2522,
                      "name": "proof",
                      "nodeType": "VariableDeclaration",
                      "scope": 2702,
                      "src": "24266:18:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                        "typeString": "struct Verifier.Proof"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2521,
                        "name": "Proof",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2118,
                        "src": "24266:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_storage_ptr",
                          "typeString": "struct Verifier.Proof"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2523,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24266:18:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2524,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24294:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2526,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "A",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2103,
                      "src": "24294:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2529,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2482,
                            "src": "24320:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2531,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24322:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24320:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2532,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2482,
                            "src": "24326:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2534,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24328:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24326:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2527,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24304:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24304:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24304:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24294:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2537,
                  "nodeType": "ExpressionStatement",
                  "src": "24294:37:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2538,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24341:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2540,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "A_p",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2105,
                      "src": "24341:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2543,
                            "name": "a_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2486,
                            "src": "24369:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2545,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24373:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24369:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2546,
                            "name": "a_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2486,
                            "src": "24377:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2548,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24381:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24377:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2541,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24353:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24353:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24353:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24341:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2551,
                  "nodeType": "ExpressionStatement",
                  "src": "24341:43:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2552,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24394:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2554,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "B",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2107,
                      "src": "24394:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2557,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24421:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2559,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24423:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24421:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2561,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24426:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24421:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2562,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24430:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2564,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24432:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24430:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2566,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24435:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24430:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2567,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24420:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2568,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24441:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2570,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2569,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24443:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24441:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2572,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24446:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24441:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2573,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2492,
                                  "src": "24450:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                                    "typeString": "uint256[2] memory[2] memory"
                                  }
                                },
                                "id": 2575,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24452:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24450:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                  "typeString": "uint256[2] memory"
                                }
                              },
                              "id": 2577,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24455:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24450:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2578,
                          "isConstant": false,
                          "isInlineArray": true,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "24440:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                            "typeString": "uint256[2] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2555,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24404:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G2Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1458,
                        "src": "24404:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G2Point_$1458_storage_ptr_$",
                          "typeString": "type(struct Pairing.G2Point storage pointer)"
                        }
                      },
                      "id": 2579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24404:55:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                        "typeString": "struct Pairing.G2Point memory"
                      }
                    },
                    "src": "24394:65:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G2Point_$1458_memory",
                      "typeString": "struct Pairing.G2Point memory"
                    }
                  },
                  "id": 2581,
                  "nodeType": "ExpressionStatement",
                  "src": "24394:65:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2582,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24469:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2584,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "B_p",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2109,
                      "src": "24469:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2587,
                            "name": "b_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2496,
                            "src": "24497:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2589,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24501:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24497:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2590,
                            "name": "b_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2496,
                            "src": "24505:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2592,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24509:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24505:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2585,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24481:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24481:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2593,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24481:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24469:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2595,
                  "nodeType": "ExpressionStatement",
                  "src": "24469:43:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2596,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24522:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2598,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "C",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2111,
                      "src": "24522:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2601,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2500,
                            "src": "24548:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2603,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24550:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24548:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2604,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2500,
                            "src": "24554:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2606,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24556:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24554:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2599,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24532:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24532:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24532:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24522:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2609,
                  "nodeType": "ExpressionStatement",
                  "src": "24522:37:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2610,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24569:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2612,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "C_p",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2113,
                      "src": "24569:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2615,
                            "name": "c_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "24597:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2617,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24601:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24597:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2618,
                            "name": "c_p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2504,
                            "src": "24605:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2620,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24609:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24605:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2613,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24581:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24581:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24581:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24569:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2623,
                  "nodeType": "ExpressionStatement",
                  "src": "24569:43:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2624,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24622:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2626,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "H",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2117,
                      "src": "24622:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2629,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2508,
                            "src": "24648:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2631,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24650:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24648:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2632,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2508,
                            "src": "24654:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2634,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24656:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24654:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2627,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24632:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24632:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24632:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24622:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2637,
                  "nodeType": "ExpressionStatement",
                  "src": "24622:37:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2638,
                        "name": "proof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2522,
                        "src": "24669:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                          "typeString": "struct Verifier.Proof memory"
                        }
                      },
                      "id": 2640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "K",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2115,
                      "src": "24669:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2643,
                            "name": "k",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2512,
                            "src": "24695:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2645,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24697:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24695:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2646,
                            "name": "k",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2512,
                            "src": "24701:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                              "typeString": "uint256[2] memory"
                            }
                          },
                          "id": 2648,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24703:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24701:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2641,
                          "name": "Pairing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2081,
                          "src": "24679:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Pairing_$2081_$",
                            "typeString": "type(library Pairing)"
                          }
                        },
                        "id": 2642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "G1Point",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1449,
                        "src": "24679:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_G1Point_$1449_storage_ptr_$",
                          "typeString": "type(struct Pairing.G1Point storage pointer)"
                        }
                      },
                      "id": 2649,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24679:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                        "typeString": "struct Pairing.G1Point memory"
                      }
                    },
                    "src": "24669:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_G1Point_$1449_memory",
                      "typeString": "struct Pairing.G1Point memory"
                    }
                  },
                  "id": 2651,
                  "nodeType": "ExpressionStatement",
                  "src": "24669:37:0"
                },
                {
                  "assignments": [
                    2655
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2655,
                      "name": "inputValues",
                      "nodeType": "VariableDeclaration",
                      "scope": 2702,
                      "src": "24716:25:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2653,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24716:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2654,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "24716:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2662,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2659,
                          "name": "input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2516,
                          "src": "24755:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                            "typeString": "uint256[3] memory"
                          }
                        },
                        "id": 2660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "24755:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "24744:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2656,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24748:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2657,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "24748:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 2661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24744:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24716:52:0"
                },
                {
                  "body": {
                    "id": 2682,
                    "nodeType": "Block",
                    "src": "24816:50:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2674,
                              "name": "inputValues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2655,
                              "src": "24830:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2676,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2675,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2664,
                              "src": "24842:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "24830:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2677,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2516,
                              "src": "24847:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 2679,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2678,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2664,
                              "src": "24853:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "24847:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24830:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2681,
                        "nodeType": "ExpressionStatement",
                        "src": "24830:25:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2667,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2664,
                      "src": "24794:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2668,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2516,
                        "src": "24798:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 2669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "24798:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24794:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2683,
                  "initializationExpression": {
                    "assignments": [
                      2664
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2664,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2702,
                        "src": "24782:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2663,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24782:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2666,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24791:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24782:10:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "24812:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2671,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2664,
                        "src": "24812:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2673,
                    "nodeType": "ExpressionStatement",
                    "src": "24812:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "24778:88:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2685,
                          "name": "inputValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2655,
                          "src": "24886:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2686,
                          "name": "proof",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2522,
                          "src": "24899:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                            "typeString": "struct Verifier.Proof memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Proof_$2118_memory_ptr",
                            "typeString": "struct Verifier.Proof memory"
                          }
                        ],
                        "id": 2684,
                        "name": "verify",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2474,
                        "src": "24879:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_Proof_$2118_memory_ptr_$returns$_t_uint256_$",
                          "typeString": "function (uint256[] memory,struct Verifier.Proof memory) returns (uint256)"
                        }
                      },
                      "id": 2687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24879:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24909:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "24879:31:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2699,
                    "nodeType": "Block",
                    "src": "25019:37:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25040:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 2520,
                        "id": 2698,
                        "nodeType": "Return",
                        "src": "25033:12:0"
                      }
                    ]
                  },
                  "id": 2700,
                  "nodeType": "IfStatement",
                  "src": "24875:181:0",
                  "trueBody": {
                    "id": 2696,
                    "nodeType": "Block",
                    "src": "24912:101:0",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e73616374696f6e207375636365737366756c6c792076657269666965642e",
                              "id": 2691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24940:36:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7e695694427cbfe2cb6d2c2298bb8b2c8bfa9b576b2daa046d20a615aa1f3668",
                                "typeString": "literal_string \"Transaction successfully verified.\""
                              },
                              "value": "Transaction successfully verified."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_7e695694427cbfe2cb6d2c2298bb8b2c8bfa9b576b2daa046d20a615aa1f3668",
                                "typeString": "literal_string \"Transaction successfully verified.\""
                              }
                            ],
                            "id": 2690,
                            "name": "Verified",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2478,
                            "src": "24931:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 2692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24931:46:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2693,
                        "nodeType": "EmitStatement",
                        "src": "24926:51:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24998:4:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2520,
                        "id": 2695,
                        "nodeType": "Return",
                        "src": "24991:11:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2702,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTx",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2482,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24015:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2479,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24015:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2481,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24020:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24015:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2486,
                  "name": "a_p",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24038:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2483,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24038:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2485,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24043:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24038:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2492,
                  "name": "b",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24063:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
                    "typeString": "uint256[2][2]"
                  },
                  "typeName": {
                    "baseType": {
                      "baseType": {
                        "id": 2487,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "24063:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2489,
                      "length": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24068:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        },
                        "value": "2"
                      },
                      "nodeType": "ArrayTypeName",
                      "src": "24063:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                        "typeString": "uint256[2]"
                      }
                    },
                    "id": 2491,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24071:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24063:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr",
                      "typeString": "uint256[2][2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2496,
                  "name": "b_p",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24089:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2493,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24089:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2495,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24094:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24089:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2500,
                  "name": "c",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24114:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2497,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24114:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2499,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24119:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24114:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2504,
                  "name": "c_p",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24137:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2501,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24137:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2503,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2502,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24142:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24137:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2508,
                  "name": "h",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24162:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2505,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24162:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2507,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2506,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24167:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24162:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2512,
                  "name": "k",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24185:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
                    "typeString": "uint256[2]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2509,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24185:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2511,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 2510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24190:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "2"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24185:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                      "typeString": "uint256[2]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2516,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24208:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                    "typeString": "uint256[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2513,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "24208:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2515,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 2514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24213:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24208:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                      "typeString": "uint256[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24001:230:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 2520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2519,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 2702,
                  "src": "24248:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2518,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24248:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24247:8:0"
            },
            "scope": 2703,
            "src": "23984:1078:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2704,
        "src": "19445:5619:0"
      }
    ],
    "src": "32:25033:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-02-05T12:47:54.577Z"
}