{
  "contracts": {
    "contracts/libraries/AddressStringUtil.sol:AddressStringUtil": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091bc97b9ccaffc4a6e36ef7888b82d339daf6a712ee2f9b220e2fb132e1013a464736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xBC SWAP8 0xB9 0xCC 0xAF 0xFC 0x4A PUSH15 0x36EF7888B82D339DAF6A712EE2F9B2 KECCAK256 0xE2 0xFB SGT 0x2E LT SGT LOG4 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "72:1321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091bc97b9ccaffc4a6e36ef7888b82d339daf6a712ee2f9b220e2fb132e1013a464736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xBC SWAP8 0xB9 0xCC 0xAF 0xFC 0x4A PUSH15 0x36EF7888B82D339DAF6A712EE2F9B2 KECCAK256 0xE2 0xFB SGT 0x2E LT SGT LOG4 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "72:1321:0:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/AddressStringUtil.sol\":\"AddressStringUtil\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091bc97b9ccaffc4a6e36ef7888b82d339daf6a712ee2f9b220e2fb132e1013a464736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091bc97b9ccaffc4a6e36ef7888b82d339daf6a712ee2f9b220e2fb132e1013a464736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091bc97b9ccaffc4a6e36ef7888b82d339daf6a712ee2f9b220e2fb132e1013a464736f6c634300060c0033",
      "srcmap": "72:1321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "72:1321:0:-:0;;;;;;;;"
    },
    "contracts/libraries/Babylonian.sol:Babylonian": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d56c201e202225c7034837cf4cf95d0c1bbd3b04f1ca5a15de245857d6ecbcfd64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 PUSH13 0x201E202225C7034837CF4CF95D 0xC SHL 0xBD EXTCODESIZE DIV CALL 0xCA GAS ISZERO 0xDE 0x24 PC JUMPI 0xD6 0xEC 0xBC REVERT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "210:1371:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d56c201e202225c7034837cf4cf95d0c1bbd3b04f1ca5a15de245857d6ecbcfd64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 PUSH13 0x201E202225C7034837CF4CF95D 0xC SHL 0xBD EXTCODESIZE DIV CALL 0xCA GAS ISZERO 0xDE 0x24 PC JUMPI 0xD6 0xEC 0xBC REVERT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "210:1371:1:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Babylonian.sol\":\"Babylonian\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0xc2389737a1d4954f93ed88099f8833ccc350a62b8b29b61c2a24f237eb4649bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d95218a6f0c7c5030e1f81aabcfe297449bf8bb92fcac1c4ba9bcfc8d61e62b\",\"dweb:/ipfs/QmXzJQLQfgqCuxL5JGMrKRQf5ziRNvQiQkNK3ZK6Lkn4CR\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d56c201e202225c7034837cf4cf95d0c1bbd3b04f1ca5a15de245857d6ecbcfd64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d56c201e202225c7034837cf4cf95d0c1bbd3b04f1ca5a15de245857d6ecbcfd64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d56c201e202225c7034837cf4cf95d0c1bbd3b04f1ca5a15de245857d6ecbcfd64736f6c634300060c0033",
      "srcmap": "210:1371:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "210:1371:1:-:0;;;;;;;;"
    },
    "contracts/libraries/BitMath.sol:BitMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aea9f510e2c9b79c9422462fab4dc741e57db50bbfe47ae028aa1b6f2b68a58e64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0xA9 CREATE2 LT 0xE2 0xC9 0xB7 SWAP13 SWAP5 0x22 CHAINID 0x2F 0xAB 0x4D 0xC7 COINBASE 0xE5 PUSH30 0xB50BBFE47AE028AA1B6F2B68A58E64736F6C634300060C00330000000000 ",
          "sourceMap": "71:2043:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aea9f510e2c9b79c9422462fab4dc741e57db50bbfe47ae028aa1b6f2b68a58e64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0xA9 CREATE2 LT 0xE2 0xC9 0xB7 SWAP13 SWAP5 0x22 CHAINID 0x2F 0xAB 0x4D 0xC7 COINBASE 0xE5 PUSH30 0xB50BBFE47AE028AA1B6F2B68A58E64736F6C634300060C00330000000000 ",
          "sourceMap": "71:2043:2:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0xa4d662f44b982fc9aa6542249aa79b2b07b3e34d5cdaa03720d3d471ac07f5de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d40d6c87edb8699d5c5c80344b642a516e0a071f173d393678fee58bbc5fde5\",\"dweb:/ipfs/QmXfp4W5jAdpcsv8VTP8RWsPcmASEtmzF9Xg9xehKK7Xdm\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aea9f510e2c9b79c9422462fab4dc741e57db50bbfe47ae028aa1b6f2b68a58e64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aea9f510e2c9b79c9422462fab4dc741e57db50bbfe47ae028aa1b6f2b68a58e64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aea9f510e2c9b79c9422462fab4dc741e57db50bbfe47ae028aa1b6f2b68a58e64736f6c634300060c0033",
      "srcmap": "71:2043:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "71:2043:2:-:0;;;;;;;;"
    },
    "contracts/libraries/FixedPoint.sol:FixedPoint": {
      "abi": [
        {
          "inputs": [],
          "name": "Q112",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "RESOLUTION",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c4610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea26469706673582212208cb78bd294fe6a05e14c8724f0ff12f6b806cb6e657176c52897ca7213cdf6ee64736f6c634300060c0033",
          "opcodes": "PUSH1 0xC4 PUSH2 0x25 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x18 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BF7A83E EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0x552F888A EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH15 0x10000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH1 0x70 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xB7 DUP12 0xD2 SWAP5 INVALID PUSH11 0x5E14C8724F0FF12F6B806 0xCB PUSH15 0x657176C52897CA7213CDF6EE64736F PUSH13 0x634300060C0033000000000000 ",
          "sourceMap": "251:5884:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea26469706673582212208cb78bd294fe6a05e14c8724f0ff12f6b806cb6e657176c52897ca7213cdf6ee64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BF7A83E EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0x552F888A EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH15 0x10000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH1 0x70 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xB7 DUP12 0xD2 SWAP5 INVALID PUSH11 0x5E14C8724F0FF12F6B806 0xCB PUSH15 0x657176C52897CA7213CDF6EE64736F PUSH13 0x634300060C0033000000000000 ",
          "sourceMap": "251:5884:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;540:62;;;:::i;:::-;;;;;;;;;;;;;;;;496:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;540:62;571:31;540:62;:::o;496:38::-;531:3;496:38;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Q112\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESOLUTION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0xc2389737a1d4954f93ed88099f8833ccc350a62b8b29b61c2a24f237eb4649bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d95218a6f0c7c5030e1f81aabcfe297449bf8bb92fcac1c4ba9bcfc8d61e62b\",\"dweb:/ipfs/QmXzJQLQfgqCuxL5JGMrKRQf5ziRNvQiQkNK3ZK6Lkn4CR\"]},\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0xa4d662f44b982fc9aa6542249aa79b2b07b3e34d5cdaa03720d3d471ac07f5de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d40d6c87edb8699d5c5c80344b642a516e0a071f173d393678fee58bbc5fde5\",\"dweb:/ipfs/QmXfp4W5jAdpcsv8VTP8RWsPcmASEtmzF9Xg9xehKK7Xdm\"]},\"contracts/libraries/FixedPoint.sol\":{\"keccak256\":\"0xba90ab07a7e7870d349fd22dda12b02b78a2b5c0f797de591115cde1ae3e47b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b91731ebb4825bcd8512fbf9721d602c298a18392919ddf800f3394231090cb4\",\"dweb:/ipfs/QmUNu1dqnNMyjUeD23KheR1ACVvWmP1T6SmH55Q2kS4nwS\"]},\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x074f43cf798f046118ed21bb9859a7fa1074b9581fe315c8702d6d292fdb2784\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://55a5cb6c5ae9ccc1e6870315bfa5f23f4c758db606f6a292fdff2224fcec082e\",\"dweb:/ipfs/QmRZayK4DWdWHaape9XcVj6VobzX7en7Tejk7gbzv7CHTy\"]}},\"version\":1}",
      "bytecode": "60c4610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea26469706673582212208cb78bd294fe6a05e14c8724f0ff12f6b806cb6e657176c52897ca7213cdf6ee64736f6c634300060c0033",
      "bin": "60c4610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea26469706673582212208cb78bd294fe6a05e14c8724f0ff12f6b806cb6e657176c52897ca7213cdf6ee64736f6c634300060c0033",
      "bin-runtime": "7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea26469706673582212208cb78bd294fe6a05e14c8724f0ff12f6b806cb6e657176c52897ca7213cdf6ee64736f6c634300060c0033",
      "srcmap": "251:5884:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "251:5884:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;540:62;;;:::i;:::-;;;;;;;;;;;;;;;;496:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;540:62;571:31;540:62;:::o;496:38::-;531:3;496:38;:::o"
    },
    "contracts/libraries/FullMath.sol:FullMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f984dcc49cf3c733c6ed496e4096e9e25427060e5201e5749a36eace47f6244f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 DUP5 0xDC 0xC4 SWAP13 RETURN 0xC7 CALLER 0xC6 0xED 0x49 PUSH15 0x4096E9E25427060E5201E5749A36EA 0xCE SELFBALANCE 0xF6 0x24 0x4F PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "193:1079:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f984dcc49cf3c733c6ed496e4096e9e25427060e5201e5749a36eace47f6244f64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 DUP5 0xDC 0xC4 SWAP13 RETURN 0xC7 CALLER 0xC6 0xED 0x49 PUSH15 0x4096E9E25427060E5201E5749A36EA 0xCE SELFBALANCE 0xF6 0x24 0x4F PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "193:1079:4:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x074f43cf798f046118ed21bb9859a7fa1074b9581fe315c8702d6d292fdb2784\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://55a5cb6c5ae9ccc1e6870315bfa5f23f4c758db606f6a292fdff2224fcec082e\",\"dweb:/ipfs/QmRZayK4DWdWHaape9XcVj6VobzX7en7Tejk7gbzv7CHTy\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f984dcc49cf3c733c6ed496e4096e9e25427060e5201e5749a36eace47f6244f64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f984dcc49cf3c733c6ed496e4096e9e25427060e5201e5749a36eace47f6244f64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f984dcc49cf3c733c6ed496e4096e9e25427060e5201e5749a36eace47f6244f64736f6c634300060c0033",
      "srcmap": "193:1079:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "193:1079:4:-:0;;;;;;;;"
    },
    "contracts/libraries/SafeERC20Namer.sol:SafeERC20Namer": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa39f3d62c9c8de0cc79b55e7dbae63768a757928593cf07b8bd014b10d6010464736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL CODECOPY RETURN 0xD6 0x2C SWAP13 DUP14 0xE0 0xCC PUSH26 0xB55E7DBAE63768A757928593CF07B8BD014B10D6010464736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "303:3524:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa39f3d62c9c8de0cc79b55e7dbae63768a757928593cf07b8bd014b10d6010464736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL CODECOPY RETURN 0xD6 0x2C SWAP13 DUP14 0xE0 0xCC PUSH26 0xB55E7DBAE63768A757928593CF07B8BD014B10D6010464736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "303:3524:5:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SafeERC20Namer.sol\":\"SafeERC20Namer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]},\"contracts/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0xd4d1d01e82d3cefc7b4c915fc970f70c1eb83ca2d7ce109164ebc60e30baea5a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ddac85505104c0fb164eae955c83d45d02f2df3e78e8bd2b86b53ba0c58dfad\",\"dweb:/ipfs/QmQQCUwJtfFkNM3AjELyT97a6Hi1oaowz585T6EHpa8T1T\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa39f3d62c9c8de0cc79b55e7dbae63768a757928593cf07b8bd014b10d6010464736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa39f3d62c9c8de0cc79b55e7dbae63768a757928593cf07b8bd014b10d6010464736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa39f3d62c9c8de0cc79b55e7dbae63768a757928593cf07b8bd014b10d6010464736f6c634300060c0033",
      "srcmap": "303:3524:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "303:3524:5:-:0;;;;;;;;"
    },
    "contracts/libraries/TransferHelper.sol:TransferHelper": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e605a811217cdf0595d8903ec8c4b30252ff432a507a033ac003211da672bfe864736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 SDIV 0xA8 GT 0x21 PUSH29 0xDF0595D8903EC8C4B30252FF432A507A033AC003211DA672BFE864736F PUSH13 0x634300060C0033000000000000 ",
          "sourceMap": "183:1621:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e605a811217cdf0595d8903ec8c4b30252ff432a507a033ac003211da672bfe864736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 SDIV 0xA8 GT 0x21 PUSH29 0xDF0595D8903EC8C4B30252FF432A507A033AC003211DA672BFE864736F PUSH13 0x634300060C0033000000000000 ",
          "sourceMap": "183:1621:6:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x8cb60b71be09222b2e240c2e5975788f8a51fa41e6a360c8041a02905a8af0ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://671ff2dbbb15d7a9c3a1c248ded68a7a4e3d713a2d3c357259fe1a4a1275988a\",\"dweb:/ipfs/QmUTrzyGpApw16uBZVuYjCdsZjdsy1Ath88qYzArkGKE7z\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e605a811217cdf0595d8903ec8c4b30252ff432a507a033ac003211da672bfe864736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e605a811217cdf0595d8903ec8c4b30252ff432a507a033ac003211da672bfe864736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e605a811217cdf0595d8903ec8c4b30252ff432a507a033ac003211da672bfe864736f6c634300060c0033",
      "srcmap": "183:1621:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "183:1621:6:-:0;;;;;;;;"
    },
    "contracts/test/AddressStringUtilTest.sol:AddressStringUtilTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "len",
              "type": "uint256"
            }
          ],
          "name": "toAsciiString",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b5061030a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b61017c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561019557600080fd5b506040519080825280601f01601f1916602001820160405280156101c0576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b600285048110156102a157600860138290030282901c600f600482901c1660f08216820361020a826102ab565b86856002028151811061021957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610251816102ab565b86856002026001018151811061026357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101dd9050565b5090949350505050565b6000600a8260ff1610156102c657506030810160f81b6102cf565b506037810160f81b5b91905056fea2646970667358221220599aef11aebf49432ae9b03145adca41ab15366fb8e076cc16030f8a3949682f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5768786E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH2 0xEA DUP4 DUP4 PUSH2 0xF1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x104 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x111 JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x17C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x20A DUP3 PUSH2 0x2AB JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x219 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x251 DUP2 PUSH2 0x2AB JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x263 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1DD SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x2C6 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x2CF JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE SWAP11 0xEF GT 0xAE 0xBF 0x49 NUMBER 0x2A 0xE9 0xB0 BALANCE GASLIMIT 0xAD 0xCA COINBASE 0xAB ISZERO CALLDATASIZE PUSH16 0xB8E076CC16030F8A3949682F64736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "118:193:7:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b61017c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561019557600080fd5b506040519080825280601f01601f1916602001820160405280156101c0576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b600285048110156102a157600860138290030282901c600f600482901c1660f08216820361020a826102ab565b86856002028151811061021957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610251816102ab565b86856002026001018151811061026357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101dd9050565b5090949350505050565b6000600a8260ff1610156102c657506030810160f81b6102cf565b506037810160f81b5b91905056fea2646970667358221220599aef11aebf49432ae9b03145adca41ab15366fb8e076cc16030f8a3949682f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5768786E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH2 0xEA DUP4 DUP4 PUSH2 0xF1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x104 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x111 JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x17C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x20A DUP3 PUSH2 0x2AB JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x219 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x251 DUP2 PUSH2 0x2AB JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x263 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1DD SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x2C6 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x2CF JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE SWAP11 0xEF GT 0xAE 0xBF 0x49 NUMBER 0x2A 0xE9 0xB0 BALANCE GASLIMIT 0xAD 0xCA COINBASE 0xAB ISZERO CALLDATASIZE PUSH16 0xB8E076CC16030F8A3949682F64736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "118:193:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;155:154;;;;;;;;;;;;;;;;-1:-1:-1;155:154:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;228:13;260:42;292:4;298:3;260:31;:42::i;:::-;253:49;155:154;-1:-1:-1;;;155:154:7:o;212:792:0:-;285:13;324:1;318:3;:7;:12;:23;;;;;340:1;334:3;:7;318:23;:36;;;;;352:2;345:3;:9;;318:36;310:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:14;427:3;417:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;417:14:0;-1:-1:-1;400:31:0;-1:-1:-1;459:13:0;;;441:15;482:490;512:1;506:3;:7;502:1;:11;482:490;;;674:1;679:2;:6;;;674:12;662:25;;;779:6;784:1;779:6;;;;883:7;;;878:13;;916:8;779:6;916:4;:8::i;:::-;905:1;911;907;:5;905:8;;;;;;;;;;;:19;;;;;;;;;;;953:8;958:2;953:4;:8::i;:::-;938:1;944;940;:5;948:1;940:9;938:12;;;;;;;;;;;:23;;;;;;;;;;-1:-1:-1;;515:3:0;;;;;-1:-1:-1;482:490:0;;-1:-1:-1;482:490:0;;-1:-1:-1;995:1:0;;212:792;-1:-1:-1;;;;212:792:0:o;1206:185::-;1251:8;1279:2;1275:1;:6;;;1271:114;;;-1:-1:-1;1315:4:0;1311:8;;1304:16;;1297:23;;1271:114;-1:-1:-1;1369:4:0;1365:8;;1358:16;;1271:114;1206:185;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"toAsciiString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/AddressStringUtilTest.sol\":\"AddressStringUtilTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]},\"contracts/test/AddressStringUtilTest.sol\":{\"keccak256\":\"0x77407acc3341094e3479a8abedc4603735f8c643d34a313fdb67d8e2746c7b82\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c7c44607feeed0ad6a30422e7a477f708b067425a4f226dc35220a50da8f3cf2\",\"dweb:/ipfs/QmWbc3zhSaVrFUK7PwfX3HxAVS1TeTqM6PNuHykN2ANw2R\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5061030a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b61017c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561019557600080fd5b506040519080825280601f01601f1916602001820160405280156101c0576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b600285048110156102a157600860138290030282901c600f600482901c1660f08216820361020a826102ab565b86856002028151811061021957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610251816102ab565b86856002026001018151811061026357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101dd9050565b5090949350505050565b6000600a8260ff1610156102c657506030810160f81b6102cf565b506037810160f81b5b91905056fea2646970667358221220599aef11aebf49432ae9b03145adca41ab15366fb8e076cc16030f8a3949682f64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b5061030a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b61017c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561019557600080fd5b506040519080825280601f01601f1916602001820160405280156101c0576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b600285048110156102a157600860138290030282901c600f600482901c1660f08216820361020a826102ab565b86856002028151811061021957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610251816102ab565b86856002026001018151811061026357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101dd9050565b5090949350505050565b6000600a8260ff1610156102c657506030810160f81b6102cf565b506037810160f81b5b91905056fea2646970667358221220599aef11aebf49432ae9b03145adca41ab15366fb8e076cc16030f8a3949682f64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80635768786e14610030575b600080fd5b6100696004803603604081101561004657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356100de565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a357818101518382015260200161008b565b50505050905090810190601f1680156100d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100ea83836100f1565b9392505050565b6060600282061580156101045750600082115b8015610111575060288211155b61017c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561019557600080fd5b506040519080825280601f01601f1916602001820160405280156101c0576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b600285048110156102a157600860138290030282901c600f600482901c1660f08216820361020a826102ab565b86856002028151811061021957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610251816102ab565b86856002026001018151811061026357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506101dd9050565b5090949350505050565b6000600a8260ff1610156102c657506030810160f81b6102cf565b506037810160f81b5b91905056fea2646970667358221220599aef11aebf49432ae9b03145adca41ab15366fb8e076cc16030f8a3949682f64736f6c634300060c0033",
      "srcmap": "118:193:7:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "118:193:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;155:154;;;;;;;;;;;;;;;;-1:-1:-1;155:154:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;228:13;260:42;292:4;298:3;260:31;:42::i;:::-;253:49;155:154;-1:-1:-1;;;155:154:7:o;212:792:0:-;285:13;324:1;318:3;:7;:12;:23;;;;;340:1;334:3;:7;318:23;:36;;;;;352:2;345:3;:9;;318:36;310:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:14;427:3;417:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;417:14:0;-1:-1:-1;400:31:0;-1:-1:-1;459:13:0;;;441:15;482:490;512:1;506:3;:7;502:1;:11;482:490;;;674:1;679:2;:6;;;674:12;662:25;;;779:6;784:1;779:6;;;;883:7;;;878:13;;916:8;779:6;916:4;:8::i;:::-;905:1;911;907;:5;905:8;;;;;;;;;;;:19;;;;;;;;;;;953:8;958:2;953:4;:8::i;:::-;938:1;944;940;:5;948:1;940:9;938:12;;;;;;;;;;;:23;;;;;;;;;;-1:-1:-1;;515:3:0;;;;;-1:-1:-1;482:490:0;;-1:-1:-1;482:490:0;;-1:-1:-1;995:1:0;;212:792;-1:-1:-1;;;;212:792:0:o;1206:185::-;1251:8;1279:2;1275:1;:6;;;1271:114;;;-1:-1:-1;1315:4:0;1311:8;;1304:16;;1297:23;;1271:114;-1:-1:-1;1369:4:0;1365:8;;1358:16;;1271:114;1206:185;;;:::o"
    },
    "contracts/test/BabylonianEchidnaTest.sol:BabylonianEchidnaTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "index",
              "type": "uint8"
            }
          ],
          "name": "checkMaxForIndex",
          "outputs": [],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "input",
              "type": "uint256"
            }
          ],
          "name": "checkSqrt",
          "outputs": [],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506102ad806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063922ab1e21461003b578063e4134de51461005a575b600080fd5b6100586004803603602081101561005157600080fd5b503561007a565b005b6100586004803603602081101561007057600080fd5b503560ff166100db565b600061008582610122565b905070010000000000000000000000000000000081106100a157fe5b816002820a11156100ae57fe5b816002826001010a11806100d157506fffffffffffffffffffffffffffffffff81145b6100d757fe5b5050565b61011f8160ff1660ff146100f8578160010160ff1660020a61011a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61007a565b50565b60008161013157506000610272565b81600170010000000000000000000000000000000082106101575760809190911c9060401b5b6801000000000000000082106101725760409190911c9060201b5b64010000000082106101895760209190911c9060101b5b62010000821061019e5760109190911c9060081b5b61010082106101b25760089190911c9060041b5b601082106101c55760049190911c9060021b5b600882106101d15760011b5b60018185816101dc57fe5b048201901c905060018185816101ee57fe5b048201901c9050600181858161020057fe5b048201901c9050600181858161021257fe5b048201901c9050600181858161022457fe5b048201901c9050600181858161023657fe5b048201901c9050600181858161024857fe5b048201901c9050600081858161025a57fe5b04905080821061026a578061026c565b815b93505050505b91905056fea2646970667358221220b88c03b4dd894a859c5f737cd23cc6f98e6ddacb8deef4dfc1b406cecf55233964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x922AB1E2 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE4134DE5 EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0xFF AND PUSH2 0xDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85 DUP3 PUSH2 0x122 JUMP JUMPDEST SWAP1 POP PUSH17 0x100000000000000000000000000000000 DUP2 LT PUSH2 0xA1 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x2 DUP3 EXP GT ISZERO PUSH2 0xAE JUMPI INVALID JUMPDEST DUP2 PUSH1 0x2 DUP3 PUSH1 0x1 ADD EXP GT DUP1 PUSH2 0xD1 JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ JUMPDEST PUSH2 0xD7 JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x11F DUP2 PUSH1 0xFF AND PUSH1 0xFF EQ PUSH2 0xF8 JUMPI DUP2 PUSH1 0x1 ADD PUSH1 0xFF AND PUSH1 0x2 EXP PUSH2 0x11A JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH2 0x7A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x131 JUMPI POP PUSH1 0x0 PUSH2 0x272 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x157 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x172 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x189 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x19E JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1B2 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x1C5 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x1D1 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1DC JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1EE JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x200 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x212 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x224 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x236 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x248 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x25A JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x26A JUMPI DUP1 PUSH2 0x26C JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 DUP13 SUB 0xB4 0xDD DUP10 0x4A DUP6 SWAP13 0x5F PUSH20 0x7CD23CC6F98E6DDACB8DEEF4DFC1B406CECF5523 CODECOPY PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "111:478:8:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063922ab1e21461003b578063e4134de51461005a575b600080fd5b6100586004803603602081101561005157600080fd5b503561007a565b005b6100586004803603602081101561007057600080fd5b503560ff166100db565b600061008582610122565b905070010000000000000000000000000000000081106100a157fe5b816002820a11156100ae57fe5b816002826001010a11806100d157506fffffffffffffffffffffffffffffffff81145b6100d757fe5b5050565b61011f8160ff1660ff146100f8578160010160ff1660020a61011a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61007a565b50565b60008161013157506000610272565b81600170010000000000000000000000000000000082106101575760809190911c9060401b5b6801000000000000000082106101725760409190911c9060201b5b64010000000082106101895760209190911c9060101b5b62010000821061019e5760109190911c9060081b5b61010082106101b25760089190911c9060041b5b601082106101c55760049190911c9060021b5b600882106101d15760011b5b60018185816101dc57fe5b048201901c905060018185816101ee57fe5b048201901c9050600181858161020057fe5b048201901c9050600181858161021257fe5b048201901c9050600181858161022457fe5b048201901c9050600181858161023657fe5b048201901c9050600181858161024857fe5b048201901c9050600081858161025a57fe5b04905080821061026a578061026c565b815b93505050505b91905056fea2646970667358221220b88c03b4dd894a859c5f737cd23cc6f98e6ddacb8deef4dfc1b406cecf55233964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x922AB1E2 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE4134DE5 EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0xFF AND PUSH2 0xDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85 DUP3 PUSH2 0x122 JUMP JUMPDEST SWAP1 POP PUSH17 0x100000000000000000000000000000000 DUP2 LT PUSH2 0xA1 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x2 DUP3 EXP GT ISZERO PUSH2 0xAE JUMPI INVALID JUMPDEST DUP2 PUSH1 0x2 DUP3 PUSH1 0x1 ADD EXP GT DUP1 PUSH2 0xD1 JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ JUMPDEST PUSH2 0xD7 JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x11F DUP2 PUSH1 0xFF AND PUSH1 0xFF EQ PUSH2 0xF8 JUMPI DUP2 PUSH1 0x1 ADD PUSH1 0xFF AND PUSH1 0x2 EXP PUSH2 0x11A JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH2 0x7A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x131 JUMPI POP PUSH1 0x0 PUSH2 0x272 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x157 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x172 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x189 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x19E JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1B2 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x1C5 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x1D1 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1DC JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1EE JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x200 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x212 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x224 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x236 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x248 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x25A JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x26A JUMPI DUP1 PUSH2 0x26C JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 DUP13 SUB 0xB4 0xDD DUP10 0x4A DUP6 SWAP13 0x5F PUSH20 0x7CD23CC6F98E6DDACB8DEEF4DFC1B406CECF5523 CODECOPY PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "111:478:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;148:300;;;;;;;;;;;;;;;;-1:-1:-1;148:300:8;;:::i;:::-;;454:133;;;;;;;;;;;;;;;;-1:-1:-1;454:133:8;;;;:::i;148:300::-;204:12;219:22;235:5;219:15;:22::i;:::-;204:37;;266:6;259:4;:13;252:21;;;;373:5;368:1;362:4;:7;:16;;355:24;;;;412:5;408:1;397:4;404:1;397:8;396:13;:21;:44;;;-1:-1:-1;421:19:8;;;396:44;389:52;;;;148:300;;:::o;454:133::-;517:63;527:5;:12;;536:3;527:12;:52;;569:5;577:1;569:9;556:23;;564:1;556:23;527:52;;;550:2;527:52;517:9;:63::i;:::-;454:133;:::o;382:1197:1:-;430:7;453:6;449:20;;-1:-1:-1;468:1:1;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"checkMaxForIndex\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"input\",\"type\":\"uint256\"}],\"name\":\"checkSqrt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/BabylonianEchidnaTest.sol\":\"BabylonianEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0xc2389737a1d4954f93ed88099f8833ccc350a62b8b29b61c2a24f237eb4649bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d95218a6f0c7c5030e1f81aabcfe297449bf8bb92fcac1c4ba9bcfc8d61e62b\",\"dweb:/ipfs/QmXzJQLQfgqCuxL5JGMrKRQf5ziRNvQiQkNK3ZK6Lkn4CR\"]},\"contracts/test/BabylonianEchidnaTest.sol\":{\"keccak256\":\"0x0edba345def987065c5058b0ab2bb0725317145e483e9f1ea97f86efb79aa638\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9c23cf12bc543168e664d6cd1a3b3db901372d19854498764f379d0bb76b3cd3\",\"dweb:/ipfs/QmPrBLiBrkZw9FPh7D2LaDj5LcEVdBkqbwfztAEFrGDcbX\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506102ad806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063922ab1e21461003b578063e4134de51461005a575b600080fd5b6100586004803603602081101561005157600080fd5b503561007a565b005b6100586004803603602081101561007057600080fd5b503560ff166100db565b600061008582610122565b905070010000000000000000000000000000000081106100a157fe5b816002820a11156100ae57fe5b816002826001010a11806100d157506fffffffffffffffffffffffffffffffff81145b6100d757fe5b5050565b61011f8160ff1660ff146100f8578160010160ff1660020a61011a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61007a565b50565b60008161013157506000610272565b81600170010000000000000000000000000000000082106101575760809190911c9060401b5b6801000000000000000082106101725760409190911c9060201b5b64010000000082106101895760209190911c9060101b5b62010000821061019e5760109190911c9060081b5b61010082106101b25760089190911c9060041b5b601082106101c55760049190911c9060021b5b600882106101d15760011b5b60018185816101dc57fe5b048201901c905060018185816101ee57fe5b048201901c9050600181858161020057fe5b048201901c9050600181858161021257fe5b048201901c9050600181858161022457fe5b048201901c9050600181858161023657fe5b048201901c9050600181858161024857fe5b048201901c9050600081858161025a57fe5b04905080821061026a578061026c565b815b93505050505b91905056fea2646970667358221220b88c03b4dd894a859c5f737cd23cc6f98e6ddacb8deef4dfc1b406cecf55233964736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506102ad806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063922ab1e21461003b578063e4134de51461005a575b600080fd5b6100586004803603602081101561005157600080fd5b503561007a565b005b6100586004803603602081101561007057600080fd5b503560ff166100db565b600061008582610122565b905070010000000000000000000000000000000081106100a157fe5b816002820a11156100ae57fe5b816002826001010a11806100d157506fffffffffffffffffffffffffffffffff81145b6100d757fe5b5050565b61011f8160ff1660ff146100f8578160010160ff1660020a61011a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61007a565b50565b60008161013157506000610272565b81600170010000000000000000000000000000000082106101575760809190911c9060401b5b6801000000000000000082106101725760409190911c9060201b5b64010000000082106101895760209190911c9060101b5b62010000821061019e5760109190911c9060081b5b61010082106101b25760089190911c9060041b5b601082106101c55760049190911c9060021b5b600882106101d15760011b5b60018185816101dc57fe5b048201901c905060018185816101ee57fe5b048201901c9050600181858161020057fe5b048201901c9050600181858161021257fe5b048201901c9050600181858161022457fe5b048201901c9050600181858161023657fe5b048201901c9050600181858161024857fe5b048201901c9050600081858161025a57fe5b04905080821061026a578061026c565b815b93505050505b91905056fea2646970667358221220b88c03b4dd894a859c5f737cd23cc6f98e6ddacb8deef4dfc1b406cecf55233964736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063922ab1e21461003b578063e4134de51461005a575b600080fd5b6100586004803603602081101561005157600080fd5b503561007a565b005b6100586004803603602081101561007057600080fd5b503560ff166100db565b600061008582610122565b905070010000000000000000000000000000000081106100a157fe5b816002820a11156100ae57fe5b816002826001010a11806100d157506fffffffffffffffffffffffffffffffff81145b6100d757fe5b5050565b61011f8160ff1660ff146100f8578160010160ff1660020a61011a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61007a565b50565b60008161013157506000610272565b81600170010000000000000000000000000000000082106101575760809190911c9060401b5b6801000000000000000082106101725760409190911c9060201b5b64010000000082106101895760209190911c9060101b5b62010000821061019e5760109190911c9060081b5b61010082106101b25760089190911c9060041b5b601082106101c55760049190911c9060021b5b600882106101d15760011b5b60018185816101dc57fe5b048201901c905060018185816101ee57fe5b048201901c9050600181858161020057fe5b048201901c9050600181858161021257fe5b048201901c9050600181858161022457fe5b048201901c9050600181858161023657fe5b048201901c9050600181858161024857fe5b048201901c9050600081858161025a57fe5b04905080821061026a578061026c565b815b93505050505b91905056fea2646970667358221220b88c03b4dd894a859c5f737cd23cc6f98e6ddacb8deef4dfc1b406cecf55233964736f6c634300060c0033",
      "srcmap": "111:478:8:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "111:478:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;148:300;;;;;;;;;;;;;;;;-1:-1:-1;148:300:8;;:::i;:::-;;454:133;;;;;;;;;;;;;;;;-1:-1:-1;454:133:8;;;;:::i;148:300::-;204:12;219:22;235:5;219:15;:22::i;:::-;204:37;;266:6;259:4;:13;252:21;;;;373:5;368:1;362:4;:7;:16;;355:24;;;;412:5;408:1;397:4;404:1;397:8;396:13;:21;:44;;;-1:-1:-1;421:19:8;;;396:44;389:52;;;;148:300;;:::o;454:133::-;517:63;527:5;:12;;536:3;527:12;:52;;569:5;577:1;569:9;556:23;;564:1;556:23;527:52;;;550:2;527:52;517:9;:63::i;:::-;454:133;:::o;382:1197:1:-;430:7;453:6;449:20;;-1:-1:-1;468:1:1;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o"
    },
    "contracts/test/BabylonianTest.sol:BabylonianTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "num",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfSqrt",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "num",
              "type": "uint256"
            }
          ],
          "name": "sqrt",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b5061023c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063677342ce1461003b578063821f49241461006a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610087565b60408051918252519081900360200190f35b6100586004803603602081101561008057600080fd5b503561009a565b6000610092826100b3565b90505b919050565b6000805a90506100a9836100b3565b505a900392915050565b6000816100c257506000610095565b81600170010000000000000000000000000000000082106100e85760809190911c9060401b5b6801000000000000000082106101035760409190911c9060201b5b640100000000821061011a5760209190911c9060101b5b62010000821061012f5760109190911c9060081b5b61010082106101435760089190911c9060041b5b601082106101565760049190911c9060021b5b600882106101625760011b5b600181858161016d57fe5b048201901c9050600181858161017f57fe5b048201901c9050600181858161019157fe5b048201901c905060018185816101a357fe5b048201901c905060018185816101b557fe5b048201901c905060018185816101c757fe5b048201901c905060018185816101d957fe5b048201901c905060008185816101eb57fe5b0490508082106101fb57806101fd565b815b9594505050505056fea2646970667358221220662f56a8aaaa45babf06b7e28a3e17cb8b6d7a225708519fa3b9432482209f7c64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x677342CE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x821F4924 EQ PUSH2 0x6A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92 DUP3 PUSH2 0xB3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xA9 DUP4 PUSH2 0xB3 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xC2 JUMPI POP PUSH1 0x0 PUSH2 0x95 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0xE8 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x103 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x11A JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x12F JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x143 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x156 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x162 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x16D JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x17F JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x191 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1A3 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1B5 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1C7 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1D9 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1EB JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1FB JUMPI DUP1 PUSH2 0x1FD JUMP JUMPDEST DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x2F56A8AAAA45BA 0xBF MOD 0xB7 0xE2 DUP11 RETURNDATACOPY OR 0xCB DUP12 PUSH14 0x7A225708519FA3B9432482209F7C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "111:326:9:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063677342ce1461003b578063821f49241461006a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610087565b60408051918252519081900360200190f35b6100586004803603602081101561008057600080fd5b503561009a565b6000610092826100b3565b90505b919050565b6000805a90506100a9836100b3565b505a900392915050565b6000816100c257506000610095565b81600170010000000000000000000000000000000082106100e85760809190911c9060401b5b6801000000000000000082106101035760409190911c9060201b5b640100000000821061011a5760209190911c9060101b5b62010000821061012f5760109190911c9060081b5b61010082106101435760089190911c9060041b5b601082106101565760049190911c9060021b5b600882106101625760011b5b600181858161016d57fe5b048201901c9050600181858161017f57fe5b048201901c9050600181858161019157fe5b048201901c905060018185816101a357fe5b048201901c905060018185816101b557fe5b048201901c905060018185816101c757fe5b048201901c905060018185816101d957fe5b048201901c905060008185816101eb57fe5b0490508082106101fb57806101fd565b815b9594505050505056fea2646970667358221220662f56a8aaaa45babf06b7e28a3e17cb8b6d7a225708519fa3b9432482209f7c64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x677342CE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x821F4924 EQ PUSH2 0x6A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92 DUP3 PUSH2 0xB3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xA9 DUP4 PUSH2 0xB3 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xC2 JUMPI POP PUSH1 0x0 PUSH2 0x95 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0xE8 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x103 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x11A JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x12F JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x143 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x156 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x162 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x16D JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x17F JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x191 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1A3 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1B5 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1C7 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1D9 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1EB JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1FB JUMPI DUP1 PUSH2 0x1FD JUMP JUMPDEST DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x2F56A8AAAA45BA 0xBF MOD 0xB7 0xE2 DUP11 RETURNDATACOPY OR 0xCB DUP12 PUSH14 0x7A225708519FA3B9432482209F7C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "111:326:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;141:103;;;;;;;;;;;;;;;;-1:-1:-1;141:103:9;;:::i;:::-;;;;;;;;;;;;;;;;250:185;;;;;;;;;;;;;;;;-1:-1:-1;250:185:9;;:::i;141:103::-;191:7;217:20;233:3;217:15;:20::i;:::-;210:27;;141:103;;;;:::o;250:185::-;312:7;331:17;351:9;331:29;;370:20;386:3;370:15;:20::i;:::-;;419:9;407:21;;;250:185;-1:-1:-1;;250:185:9:o;382:1197:1:-;430:7;453:6;449:20;;-1:-1:-1;468:1:1;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;382:1197;-1:-1:-1;;;;;382:1197:1:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfSqrt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"sqrt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/BabylonianTest.sol\":\"BabylonianTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0xc2389737a1d4954f93ed88099f8833ccc350a62b8b29b61c2a24f237eb4649bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d95218a6f0c7c5030e1f81aabcfe297449bf8bb92fcac1c4ba9bcfc8d61e62b\",\"dweb:/ipfs/QmXzJQLQfgqCuxL5JGMrKRQf5ziRNvQiQkNK3ZK6Lkn4CR\"]},\"contracts/test/BabylonianTest.sol\":{\"keccak256\":\"0xf15d60bebe5a6417ad06deb35f51e46e62d1cafe039eb213407f96ddc821b2ff\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8001775892a2ce733dfd8ee247dc39112ea8727d2adc023d1fc2cea90dfe8c43\",\"dweb:/ipfs/QmSsszaJUyC14S2Sr5dkKuBBu3ZMS4sAb4q3mjXEUUaxM6\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5061023c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063677342ce1461003b578063821f49241461006a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610087565b60408051918252519081900360200190f35b6100586004803603602081101561008057600080fd5b503561009a565b6000610092826100b3565b90505b919050565b6000805a90506100a9836100b3565b505a900392915050565b6000816100c257506000610095565b81600170010000000000000000000000000000000082106100e85760809190911c9060401b5b6801000000000000000082106101035760409190911c9060201b5b640100000000821061011a5760209190911c9060101b5b62010000821061012f5760109190911c9060081b5b61010082106101435760089190911c9060041b5b601082106101565760049190911c9060021b5b600882106101625760011b5b600181858161016d57fe5b048201901c9050600181858161017f57fe5b048201901c9050600181858161019157fe5b048201901c905060018185816101a357fe5b048201901c905060018185816101b557fe5b048201901c905060018185816101c757fe5b048201901c905060018185816101d957fe5b048201901c905060008185816101eb57fe5b0490508082106101fb57806101fd565b815b9594505050505056fea2646970667358221220662f56a8aaaa45babf06b7e28a3e17cb8b6d7a225708519fa3b9432482209f7c64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b5061023c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063677342ce1461003b578063821f49241461006a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610087565b60408051918252519081900360200190f35b6100586004803603602081101561008057600080fd5b503561009a565b6000610092826100b3565b90505b919050565b6000805a90506100a9836100b3565b505a900392915050565b6000816100c257506000610095565b81600170010000000000000000000000000000000082106100e85760809190911c9060401b5b6801000000000000000082106101035760409190911c9060201b5b640100000000821061011a5760209190911c9060101b5b62010000821061012f5760109190911c9060081b5b61010082106101435760089190911c9060041b5b601082106101565760049190911c9060021b5b600882106101625760011b5b600181858161016d57fe5b048201901c9050600181858161017f57fe5b048201901c9050600181858161019157fe5b048201901c905060018185816101a357fe5b048201901c905060018185816101b557fe5b048201901c905060018185816101c757fe5b048201901c905060018185816101d957fe5b048201901c905060008185816101eb57fe5b0490508082106101fb57806101fd565b815b9594505050505056fea2646970667358221220662f56a8aaaa45babf06b7e28a3e17cb8b6d7a225708519fa3b9432482209f7c64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063677342ce1461003b578063821f49241461006a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610087565b60408051918252519081900360200190f35b6100586004803603602081101561008057600080fd5b503561009a565b6000610092826100b3565b90505b919050565b6000805a90506100a9836100b3565b505a900392915050565b6000816100c257506000610095565b81600170010000000000000000000000000000000082106100e85760809190911c9060401b5b6801000000000000000082106101035760409190911c9060201b5b640100000000821061011a5760209190911c9060101b5b62010000821061012f5760109190911c9060081b5b61010082106101435760089190911c9060041b5b601082106101565760049190911c9060021b5b600882106101625760011b5b600181858161016d57fe5b048201901c9050600181858161017f57fe5b048201901c9050600181858161019157fe5b048201901c905060018185816101a357fe5b048201901c905060018185816101b557fe5b048201901c905060018185816101c757fe5b048201901c905060018185816101d957fe5b048201901c905060008185816101eb57fe5b0490508082106101fb57806101fd565b815b9594505050505056fea2646970667358221220662f56a8aaaa45babf06b7e28a3e17cb8b6d7a225708519fa3b9432482209f7c64736f6c634300060c0033",
      "srcmap": "111:326:9:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "111:326:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;141:103;;;;;;;;;;;;;;;;-1:-1:-1;141:103:9;;:::i;:::-;;;;;;;;;;;;;;;;250:185;;;;;;;;;;;;;;;;-1:-1:-1;250:185:9;;:::i;141:103::-;191:7;217:20;233:3;217:15;:20::i;:::-;210:27;;141:103;;;;:::o;250:185::-;312:7;331:17;351:9;331:29;;370:20;386:3;370:15;:20::i;:::-;;419:9;407:21;;;250:185;-1:-1:-1;;250:185:9:o;382:1197:1:-;430:7;453:6;449:20;;-1:-1:-1;468:1:1;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;382:1197;-1:-1:-1;;;;;382:1197:1:o"
    },
    "contracts/test/BitMathEchidnaTest.sol:BitMathEchidnaTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "input",
              "type": "uint256"
            }
          ],
          "name": "leastSignificantBitInvariant",
          "outputs": [],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "input",
              "type": "uint256"
            }
          ],
          "name": "mostSignificantBitInvariant",
          "outputs": [],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506104a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100c9565b600061008282610106565b905060ff811660020a821661009357fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821660020a018216156100c557fe5b5050565b60006100d482610336565b90508060ff1660020a8210156100e657fe5b8060ff1660ff148061010057508060010160ff1660020a82105b6100c557fe5b6000808211610160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104516022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156101a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016101aa565b608082901c91505b67ffffffffffffffff8216156101e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016101e9565b604082901c91505b63ffffffff82161561021c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610224565b602082901c91505b61ffff821615610255577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161025d565b601082901c91505b60ff82161561028d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801610295565b600882901c91505b600f8216156102c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016102cd565b600482901c91505b60038216156102fd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610305565b600282901c91505b6001821615610331577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b919050565b6000808211610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104306021913960400191505060405180910390fd5b70010000000000000000000000000000000082106103b057608091821c91015b6801000000000000000082106103c857604091821c91015b64010000000082106103dc57602091821c91015b6201000082106103ee57601091821c91015b61010082106103ff57600891821c91015b6010821061040f57600491821c91015b6004821061041f57600291821c91015b600282106103315760010191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa26469706673582212205878c5a57100d638f8295ec412ae822e8919690aab6f96159a08dfee44eba0e664736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A8 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2D711E0C EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF94AC90E EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82 DUP3 PUSH2 0x106 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH1 0x2 EXP DUP3 AND PUSH2 0x93 JUMPI INVALID JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP3 AND PUSH1 0x2 EXP ADD DUP3 AND ISZERO PUSH2 0xC5 JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD4 DUP3 PUSH2 0x336 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT ISZERO PUSH2 0xE6 JUMPI INVALID JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0xFF EQ DUP1 PUSH2 0x100 JUMPI POP DUP1 PUSH1 0x1 ADD PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT JUMPDEST PUSH2 0xC5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x160 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x451 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x1A2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x1E1 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 ADD PUSH2 0x1E9 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x21C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x224 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x255 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 ADD PUSH2 0x25D JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x28D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 ADD PUSH2 0x295 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x2C5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x2FD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE ADD PUSH2 0x305 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x331 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x390 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x430 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3B0 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3C8 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x3DC JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x3EE JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x3FF JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x40F JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x41F JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x331 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP INVALID TIMESTAMP PUSH10 0x744D6174683A3A6D6F73 PUSH21 0x5369676E69666963616E744269743A207A65726F42 PUSH10 0x744D6174683A3A6C6561 PUSH20 0x745369676E69666963616E744269743A207A6572 PUSH16 0xA26469706673582212205878C5A57100 0xD6 CODESIZE 0xF8 0x29 0x5E 0xC4 SLT 0xAE DUP3 0x2E DUP10 NOT PUSH10 0xAAB6F96159A08DFEE44 0xEB LOG0 0xE6 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "107:505:10:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100c9565b600061008282610106565b905060ff811660020a821661009357fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821660020a018216156100c557fe5b5050565b60006100d482610336565b90508060ff1660020a8210156100e657fe5b8060ff1660ff148061010057508060010160ff1660020a82105b6100c557fe5b6000808211610160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104516022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156101a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016101aa565b608082901c91505b67ffffffffffffffff8216156101e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016101e9565b604082901c91505b63ffffffff82161561021c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610224565b602082901c91505b61ffff821615610255577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161025d565b601082901c91505b60ff82161561028d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801610295565b600882901c91505b600f8216156102c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016102cd565b600482901c91505b60038216156102fd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610305565b600282901c91505b6001821615610331577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b919050565b6000808211610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104306021913960400191505060405180910390fd5b70010000000000000000000000000000000082106103b057608091821c91015b6801000000000000000082106103c857604091821c91015b64010000000082106103dc57602091821c91015b6201000082106103ee57601091821c91015b61010082106103ff57600891821c91015b6010821061040f57600491821c91015b6004821061041f57600291821c91015b600282106103315760010191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa26469706673582212205878c5a57100d638f8295ec412ae822e8919690aab6f96159a08dfee44eba0e664736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2D711E0C EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF94AC90E EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x77 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82 DUP3 PUSH2 0x106 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH1 0x2 EXP DUP3 AND PUSH2 0x93 JUMPI INVALID JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xFF DUP3 AND PUSH1 0x2 EXP ADD DUP3 AND ISZERO PUSH2 0xC5 JUMPI INVALID JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD4 DUP3 PUSH2 0x336 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT ISZERO PUSH2 0xE6 JUMPI INVALID JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0xFF EQ DUP1 PUSH2 0x100 JUMPI POP DUP1 PUSH1 0x1 ADD PUSH1 0xFF AND PUSH1 0x2 EXP DUP3 LT JUMPDEST PUSH2 0xC5 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x160 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x451 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x1A2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x1E1 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 ADD PUSH2 0x1E9 JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x21C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x224 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x255 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 ADD PUSH2 0x25D JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x28D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 ADD PUSH2 0x295 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x2C5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x2FD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE ADD PUSH2 0x305 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x331 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x390 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x430 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3B0 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3C8 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x3DC JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x3EE JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x3FF JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x40F JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x41F JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x331 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP INVALID TIMESTAMP PUSH10 0x744D6174683A3A6D6F73 PUSH21 0x5369676E69666963616E744269743A207A65726F42 PUSH10 0x744D6174683A3A6C6561 PUSH20 0x745369676E69666963616E744269743A207A6572 PUSH16 0xA26469706673582212205878C5A57100 0xD6 CODESIZE 0xF8 0x29 0x5E 0xC4 SLT 0xAE DUP3 0x2E DUP10 NOT PUSH10 0xAAB6F96159A08DFEE44 0xEB LOG0 0xE6 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "107:505:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;380:230;;;;;;;;;;;;;;;;-1:-1:-1;380:230:10;;:::i;:::-;;141:233;;;;;;;;;;;;;;;;-1:-1:-1;141:233:10;;:::i;380:230::-;457:9;469:34;497:5;469:27;:34::i;:::-;457:46;-1:-1:-1;529:15:10;;;537:1;529:15;520:25;;513:38;;;;577:19;:15;;;585:1;577:15;:19;568:29;;:34;561:42;;;;380:230;;:::o;141:233::-;217:9;229:33;256:5;229:26;:33::i;:::-;217:45;;301:3;289:15;;297:1;289:15;279:5;:26;;272:34;;;;323:3;:10;;330:3;323:10;:43;;;;358:3;364:1;358:7;345:21;;353:1;345:21;337:5;:29;323:43;316:51;;;1210:902:2;1273:7;1304:1;1300;:5;1292:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:3:2;1376:15;;;:19;1372:98;;1411:8;;1372:98;;;1456:3;1450:9;;;;;1372:98;1483:14;;;:18;1479:95;;1517:7;;1479:95;;;1561:2;1555:8;;;;;1479:95;1587:14;;;:18;1583:95;;1621:7;;1583:95;;;1665:2;1659:8;;;;;1583:95;1691:14;;;:18;1687:95;;1725:7;;1687:95;;;1769:2;1763:8;;;;;1687:95;1795:13;;;:17;1791:92;;1828:6;;1791:92;;;1871:1;1865:7;;;;;1791:92;1900:3;1896:7;;:11;1892:86;;1923:6;;1892:86;;;1966:1;1960:7;;;;;1892:86;1995:3;1991:7;;:11;1987:86;;2018:6;;1987:86;;;2061:1;2055:7;;;;;1987:86;2090:3;2086:7;;:11;2082:23;;2099:6;;2082:23;1210:902;;;:::o;217:768::-;279:7;310:1;306;:5;298:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:35;364:1;:40;360:102;;426:3;420:9;;;;443:8;360:102;480:19;475:1;:24;471:84;;521:2;515:8;;;;537:7;471:84;573:11;568:1;:16;564:76;;606:2;600:8;;;;622:7;564:76;658:7;653:1;:12;649:72;;687:2;681:8;;;;703:7;649:72;739:5;734:1;:10;730:68;;766:1;760:7;;;;781:6;730:68;816:4;811:1;:9;807:67;;842:1;836:7;;;;857:6;807:67;892:3;887:1;:8;883:66;;917:1;911:7;;;;932:6;883:66;967:3;962:1;:8;958:20;;977:1;972:6;217:768;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"input\",\"type\":\"uint256\"}],\"name\":\"leastSignificantBitInvariant\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"input\",\"type\":\"uint256\"}],\"name\":\"mostSignificantBitInvariant\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/BitMathEchidnaTest.sol\":\"BitMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0xa4d662f44b982fc9aa6542249aa79b2b07b3e34d5cdaa03720d3d471ac07f5de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d40d6c87edb8699d5c5c80344b642a516e0a071f173d393678fee58bbc5fde5\",\"dweb:/ipfs/QmXfp4W5jAdpcsv8VTP8RWsPcmASEtmzF9Xg9xehKK7Xdm\"]},\"contracts/test/BitMathEchidnaTest.sol\":{\"keccak256\":\"0x344aa98f3bbd92b9d1290e41fdfe17f23c81e09b247642a9adf5ba4eca833e7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1ae28b9f41147ce1d20eaabacaa6a136fc9ef3fa4516485fecc21b1fe155063\",\"dweb:/ipfs/QmSsCqzXWLV7dJosJaGFpGDsQC8KXWBpY7usFEBQCPPbWm\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506104a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100c9565b600061008282610106565b905060ff811660020a821661009357fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821660020a018216156100c557fe5b5050565b60006100d482610336565b90508060ff1660020a8210156100e657fe5b8060ff1660ff148061010057508060010160ff1660020a82105b6100c557fe5b6000808211610160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104516022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156101a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016101aa565b608082901c91505b67ffffffffffffffff8216156101e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016101e9565b604082901c91505b63ffffffff82161561021c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610224565b602082901c91505b61ffff821615610255577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161025d565b601082901c91505b60ff82161561028d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801610295565b600882901c91505b600f8216156102c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016102cd565b600482901c91505b60038216156102fd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610305565b600282901c91505b6001821615610331577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b919050565b6000808211610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104306021913960400191505060405180910390fd5b70010000000000000000000000000000000082106103b057608091821c91015b6801000000000000000082106103c857604091821c91015b64010000000082106103dc57602091821c91015b6201000082106103ee57601091821c91015b61010082106103ff57600891821c91015b6010821061040f57600491821c91015b6004821061041f57600291821c91015b600282106103315760010191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa26469706673582212205878c5a57100d638f8295ec412ae822e8919690aab6f96159a08dfee44eba0e664736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506104a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100c9565b600061008282610106565b905060ff811660020a821661009357fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821660020a018216156100c557fe5b5050565b60006100d482610336565b90508060ff1660020a8210156100e657fe5b8060ff1660ff148061010057508060010160ff1660020a82105b6100c557fe5b6000808211610160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104516022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156101a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016101aa565b608082901c91505b67ffffffffffffffff8216156101e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016101e9565b604082901c91505b63ffffffff82161561021c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610224565b602082901c91505b61ffff821615610255577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161025d565b601082901c91505b60ff82161561028d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801610295565b600882901c91505b600f8216156102c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016102cd565b600482901c91505b60038216156102fd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610305565b600282901c91505b6001821615610331577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b919050565b6000808211610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104306021913960400191505060405180910390fd5b70010000000000000000000000000000000082106103b057608091821c91015b6801000000000000000082106103c857604091821c91015b64010000000082106103dc57602091821c91015b6201000082106103ee57601091821c91015b61010082106103ff57600891821c91015b6010821061040f57600491821c91015b6004821061041f57600291821c91015b600282106103315760010191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa26469706673582212205878c5a57100d638f8295ec412ae822e8919690aab6f96159a08dfee44eba0e664736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e1461005a575b600080fd5b6100586004803603602081101561005157600080fd5b5035610077565b005b6100586004803603602081101561007057600080fd5b50356100c9565b600061008282610106565b905060ff811660020a821661009357fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821660020a018216156100c557fe5b5050565b60006100d482610336565b90508060ff1660020a8210156100e657fe5b8060ff1660ff148061010057508060010160ff1660020a82105b6100c557fe5b6000808211610160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104516022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156101a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016101aa565b608082901c91505b67ffffffffffffffff8216156101e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0016101e9565b604082901c91505b63ffffffff82161561021c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610224565b602082901c91505b61ffff821615610255577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161025d565b601082901c91505b60ff82161561028d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801610295565b600882901c91505b600f8216156102c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016102cd565b600482901c91505b60038216156102fd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610305565b600282901c91505b6001821615610331577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b919050565b6000808211610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104306021913960400191505060405180910390fd5b70010000000000000000000000000000000082106103b057608091821c91015b6801000000000000000082106103c857604091821c91015b64010000000082106103dc57602091821c91015b6201000082106103ee57601091821c91015b61010082106103ff57600891821c91015b6010821061040f57600491821c91015b6004821061041f57600291821c91015b600282106103315760010191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa26469706673582212205878c5a57100d638f8295ec412ae822e8919690aab6f96159a08dfee44eba0e664736f6c634300060c0033",
      "srcmap": "107:505:10:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "107:505:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;380:230;;;;;;;;;;;;;;;;-1:-1:-1;380:230:10;;:::i;:::-;;141:233;;;;;;;;;;;;;;;;-1:-1:-1;141:233:10;;:::i;380:230::-;457:9;469:34;497:5;469:27;:34::i;:::-;457:46;-1:-1:-1;529:15:10;;;537:1;529:15;520:25;;513:38;;;;577:19;:15;;;585:1;577:15;:19;568:29;;:34;561:42;;;;380:230;;:::o;141:233::-;217:9;229:33;256:5;229:26;:33::i;:::-;217:45;;301:3;289:15;;297:1;289:15;279:5;:26;;272:34;;;;323:3;:10;;330:3;323:10;:43;;;;358:3;364:1;358:7;345:21;;353:1;345:21;337:5;:29;323:43;316:51;;;1210:902:2;1273:7;1304:1;1300;:5;1292:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:3:2;1376:15;;;:19;1372:98;;1411:8;;1372:98;;;1456:3;1450:9;;;;;1372:98;1483:14;;;:18;1479:95;;1517:7;;1479:95;;;1561:2;1555:8;;;;;1479:95;1587:14;;;:18;1583:95;;1621:7;;1583:95;;;1665:2;1659:8;;;;;1583:95;1691:14;;;:18;1687:95;;1725:7;;1687:95;;;1769:2;1763:8;;;;;1687:95;1795:13;;;:17;1791:92;;1828:6;;1791:92;;;1871:1;1865:7;;;;;1791:92;1900:3;1896:7;;:11;1892:86;;1923:6;;1892:86;;;1966:1;1960:7;;;;;1892:86;1995:3;1991:7;;:11;1987:86;;2018:6;;1987:86;;;2061:1;2055:7;;;;;1987:86;2090:3;2086:7;;:11;2082:23;;2099:6;;2082:23;1210:902;;;:::o;217:768::-;279:7;310:1;306;:5;298:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:35;364:1;:40;360:102;;426:3;420:9;;;;443:8;360:102;480:19;475:1;:24;471:84;;521:2;515:8;;;;537:7;471:84;573:11;568:1;:16;564:76;;606:2;600:8;;;;622:7;564:76;658:7;653:1;:12;649:72;;687:2;681:8;;;;703:7;649:72;739:5;734:1;:10;730:68;;766:1;760:7;;;;781:6;730:68;816:4;811:1;:9;807:67;;842:1;836:7;;;;857:6;807:67;892:3;887:1;:8;883:66;;917:1;911:7;;;;932:6;883:66;967:3;962:1;:8;958:20;;977:1;972:6;217:768;;;:::o"
    },
    "contracts/test/BitMathTest.sol:BitMathTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfLeastSignificantBit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfMostSignificantBit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            }
          ],
          "name": "leastSignificantBit",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "r",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            }
          ],
          "name": "mostSignificantBit",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "r",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506104cf806100206000396000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb83610227565b600061012182610227565b92915050565b6000610121825b6000808211610188576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104576021913960400191505060405180910390fd5b70010000000000000000000000000000000082106101a857608091821c91015b6801000000000000000082106101c057604091821c91015b64010000000082106101d457602091821c91015b6201000082106101e657601091821c91015b61010082106101f757600891821c91015b6010821061020757600491821c91015b6004821061021757600291821c91015b6002821061010257600101919050565b6000808211610281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104786022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156102c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016102cb565b608082901c91505b67ffffffffffffffff821615610302577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161030a565b604082901c91505b63ffffffff82161561033d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610345565b602082901c91505b61ffff821615610376577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161037e565b601082901c91505b60ff8216156103ae577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016103b6565b600882901c91505b600f8216156103e6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016103ee565b600482901c91505b600382161561041e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610426565b600282901c91505b6001821615610102577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa264697066735822122049339c6ff7b332617ba0de0ce199c546e5e0d2801386c470b80381c4cea8505a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4CF DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x46B777 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x6B83CF26 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xD230D23F EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xE6BCBC65 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x107 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x127 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x12E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 PUSH2 0x227 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x188 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x457 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x1A8 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x1C0 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x1D4 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x1E6 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1F7 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x207 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x217 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x102 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x281 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x478 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x2C3 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 ADD PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x302 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 ADD PUSH2 0x30A JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x33D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x345 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x376 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x3AE JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 ADD PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x3E6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD PUSH2 0x3EE JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x41E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE ADD PUSH2 0x426 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x102 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP2 SWAP1 POP JUMP INVALID TIMESTAMP PUSH10 0x744D6174683A3A6D6F73 PUSH21 0x5369676E69666963616E744269743A207A65726F42 PUSH10 0x744D6174683A3A6C6561 PUSH20 0x745369676E69666963616E744269743A207A6572 PUSH16 0xA264697066735822122049339C6FF7B3 ORIGIN PUSH2 0x7BA0 0xDE 0xC 0xE1 SWAP10 0xC5 CHAINID 0xE5 0xE0 0xD2 DUP1 SGT DUP7 0xC4 PUSH17 0xB80381C4CEA8505A64736F6C634300060C STOP CALLER ",
          "sourceMap": "107:711:11:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb83610227565b600061012182610227565b92915050565b6000610121825b6000808211610188576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104576021913960400191505060405180910390fd5b70010000000000000000000000000000000082106101a857608091821c91015b6801000000000000000082106101c057604091821c91015b64010000000082106101d457602091821c91015b6201000082106101e657601091821c91015b61010082106101f757600891821c91015b6010821061020757600491821c91015b6004821061021757600291821c91015b6002821061010257600101919050565b6000808211610281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104786022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156102c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016102cb565b608082901c91505b67ffffffffffffffff821615610302577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161030a565b604082901c91505b63ffffffff82161561033d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610345565b602082901c91505b61ffff821615610376577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161037e565b601082901c91505b60ff8216156103ae577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016103b6565b600882901c91505b600f8216156103e6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016103ee565b600482901c91505b600382161561041e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610426565b600282901c91505b6001821615610102577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa264697066735822122049339c6ff7b332617ba0de0ce199c546e5e0d2801386c470b80381c4cea8505a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x46B777 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x6B83CF26 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xD230D23F EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xE6BCBC65 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x107 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x127 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x12E JUMP JUMPDEST POP GAS SWAP1 SUB SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0xFB DUP4 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 PUSH2 0x227 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121 DUP3 JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x188 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x457 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x1A8 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x1C0 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x1D4 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x1E6 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1F7 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x207 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x217 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x102 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x281 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x478 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x2C3 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 ADD PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x302 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 ADD PUSH2 0x30A JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x33D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x345 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x376 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x3AE JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 ADD PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x3E6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC ADD PUSH2 0x3EE JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x41E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE ADD PUSH2 0x426 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x102 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP2 SWAP1 POP JUMP INVALID TIMESTAMP PUSH10 0x744D6174683A3A6D6F73 PUSH21 0x5369676E69666963616E744269743A207A65726F42 PUSH10 0x744D6174683A3A6C6561 PUSH20 0x745369676E69666963616E744269743A207A6572 PUSH16 0xA264697066735822122049339C6FF7B3 ORIGIN PUSH2 0x7BA0 0xDE 0xC 0xE1 SWAP10 0xC5 CHAINID 0xE5 0xE0 0xD2 DUP1 SGT DUP7 0xC4 PUSH17 0xB80381C4CEA8505A64736F6C634300060C STOP CALLER ",
          "sourceMap": "107:711:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:206;;;;;;;;;;;;;;;;-1:-1:-1;264:206:11;;:::i;:::-;;;;;;;;;;;;;;;;608:208;;;;;;;;;;;;;;;;-1:-1:-1;608:208:11;;:::i;476:126::-;;;;;;;;;;;;;;;;-1:-1:-1;476:126:11;;:::i;:::-;;;;;;;;;;;;;;;;;;;134:124;;;;;;;;;;;;;;;;-1:-1:-1;134:124:11;;:::i;264:206::-;338:7;357:17;377:9;357:29;;396;423:1;396:26;:29::i;:::-;;454:9;442:21;;;-1:-1:-1;264:206:11;;;;:::o;608:208::-;683:7;702:17;722:9;702:29;;741:30;769:1;741:27;:30::i;476:126::-;539:7;565:30;593:1;565:27;:30::i;:::-;558:37;476:126;-1:-1:-1;;476:126:11:o;134:124::-;196:7;222:29;249:1;217:768:2;279:7;310:1;306;:5;298:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:35;364:1;:40;360:102;;426:3;420:9;;;;443:8;360:102;480:19;475:1;:24;471:84;;521:2;515:8;;;;537:7;471:84;573:11;568:1;:16;564:76;;606:2;600:8;;;;622:7;564:76;658:7;653:1;:12;649:72;;687:2;681:8;;;;703:7;649:72;739:5;734:1;:10;730:68;;766:1;760:7;;;;781:6;730:68;816:4;811:1;:9;807:67;;842:1;836:7;;;;857:6;807:67;892:3;887:1;:8;883:66;;917:1;911:7;;;;932:6;883:66;967:3;962:1;:8;958:20;;977:1;972:6;217:768;;;:::o;1210:902::-;1273:7;1304:1;1300;:5;1292:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:3:2;1376:15;;;:19;1372:98;;1411:8;;1372:98;;;1456:3;1450:9;;;;;1372:98;1483:14;;;:18;1479:95;;1517:7;;1479:95;;;1561:2;1555:8;;;;;1479:95;1587:14;;;:18;1583:95;;1621:7;;1583:95;;;1665:2;1659:8;;;;;1583:95;1691:14;;;:18;1687:95;;1725:7;;1687:95;;;1769:2;1763:8;;;;;1687:95;1795:13;;;:17;1791:92;;1828:6;;1791:92;;;1871:1;1865:7;;;;;1791:92;1900:3;1896:7;;:11;1892:86;;1923:6;;1892:86;;;1966:1;1960:7;;;;;1892:86;1995:3;1991:7;;:11;1987:86;;2018:6;;1987:86;;;2061:1;2055:7;;;;;1987:86;2090:3;2086:7;;:11;2082:23;;2099:6;;1210:902;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfLeastSignificantBit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfMostSignificantBit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"leastSignificantBit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"r\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"mostSignificantBit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"r\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/BitMathTest.sol\":\"BitMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0xa4d662f44b982fc9aa6542249aa79b2b07b3e34d5cdaa03720d3d471ac07f5de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d40d6c87edb8699d5c5c80344b642a516e0a071f173d393678fee58bbc5fde5\",\"dweb:/ipfs/QmXfp4W5jAdpcsv8VTP8RWsPcmASEtmzF9Xg9xehKK7Xdm\"]},\"contracts/test/BitMathTest.sol\":{\"keccak256\":\"0xb6e0dd8038df04be3f6e1d32b14578f15af2e1f3fabc3b9b5bd53c6f3e62a451\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1881b4c99003d89f9b7cc54e3e1c2052118de42e8b9e8640706d47b96a85b593\",\"dweb:/ipfs/QmbGKbxo7tiQUqDzv3XhisJiepSVFqrGCX38pTatoa1qYa\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506104cf806100206000396000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb83610227565b600061012182610227565b92915050565b6000610121825b6000808211610188576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104576021913960400191505060405180910390fd5b70010000000000000000000000000000000082106101a857608091821c91015b6801000000000000000082106101c057604091821c91015b64010000000082106101d457602091821c91015b6201000082106101e657601091821c91015b61010082106101f757600891821c91015b6010821061020757600491821c91015b6004821061021757600291821c91015b6002821061010257600101919050565b6000808211610281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104786022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156102c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016102cb565b608082901c91505b67ffffffffffffffff821615610302577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161030a565b604082901c91505b63ffffffff82161561033d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610345565b602082901c91505b61ffff821615610376577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161037e565b601082901c91505b60ff8216156103ae577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016103b6565b600882901c91505b600f8216156103e6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016103ee565b600482901c91505b600382161561041e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610426565b600282901c91505b6001821615610102577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa264697066735822122049339c6ff7b332617ba0de0ce199c546e5e0d2801386c470b80381c4cea8505a64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506104cf806100206000396000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb83610227565b600061012182610227565b92915050565b6000610121825b6000808211610188576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104576021913960400191505060405180910390fd5b70010000000000000000000000000000000082106101a857608091821c91015b6801000000000000000082106101c057604091821c91015b64010000000082106101d457602091821c91015b6201000082106101e657601091821c91015b61010082106101f757600891821c91015b6010821061020757600491821c91015b6004821061021757600291821c91015b6002821061010257600101919050565b6000808211610281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104786022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156102c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016102cb565b608082901c91505b67ffffffffffffffff821615610302577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161030a565b604082901c91505b63ffffffff82161561033d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610345565b602082901c91505b61ffff821615610376577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161037e565b601082901c91505b60ff8216156103ae577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016103b6565b600882901c91505b600f8216156103e6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016103ee565b600482901c91505b600382161561041e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610426565b600282901c91505b6001821615610102577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa264697066735822122049339c6ff7b332617ba0de0ce199c546e5e0d2801386c470b80381c4cea8505a64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf261461007f578063d230d23f1461009c578063e6bcbc65146100cf575b600080fd5b61006d6004803603602081101561006657600080fd5b50356100ec565b60408051918252519081900360200190f35b61006d6004803603602081101561009557600080fd5b5035610107565b6100b9600480360360208110156100b257600080fd5b5035610116565b6040805160ff9092168252519081900360200190f35b6100b9600480360360208110156100e557600080fd5b5035610127565b6000805a90506100fb8361012e565b505a900390505b919050565b6000805a90506100fb83610227565b600061012182610227565b92915050565b6000610121825b6000808211610188576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104576021913960400191505060405180910390fd5b70010000000000000000000000000000000082106101a857608091821c91015b6801000000000000000082106101c057604091821c91015b64010000000082106101d457602091821c91015b6201000082106101e657601091821c91015b61010082106101f757600891821c91015b6010821061020757600491821c91015b6004821061021757600291821c91015b6002821061010257600101919050565b6000808211610281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104786022913960400191505060405180910390fd5b5060ff6fffffffffffffffffffffffffffffffff8216156102c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80016102cb565b608082901c91505b67ffffffffffffffff821615610302577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161030a565b604082901c91505b63ffffffff82161561033d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610345565b602082901c91505b61ffff821615610376577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161037e565b601082901c91505b60ff8216156103ae577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016103b6565b600882901c91505b600f8216156103e6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016103ee565b600482901c91505b600382161561041e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610426565b600282901c91505b6001821615610102577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191905056fe4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726fa264697066735822122049339c6ff7b332617ba0de0ce199c546e5e0d2801386c470b80381c4cea8505a64736f6c634300060c0033",
      "srcmap": "107:711:11:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "107:711:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:206;;;;;;;;;;;;;;;;-1:-1:-1;264:206:11;;:::i;:::-;;;;;;;;;;;;;;;;608:208;;;;;;;;;;;;;;;;-1:-1:-1;608:208:11;;:::i;476:126::-;;;;;;;;;;;;;;;;-1:-1:-1;476:126:11;;:::i;:::-;;;;;;;;;;;;;;;;;;;134:124;;;;;;;;;;;;;;;;-1:-1:-1;134:124:11;;:::i;264:206::-;338:7;357:17;377:9;357:29;;396;423:1;396:26;:29::i;:::-;;454:9;442:21;;;-1:-1:-1;264:206:11;;;;:::o;608:208::-;683:7;702:17;722:9;702:29;;741:30;769:1;741:27;:30::i;476:126::-;539:7;565:30;593:1;565:27;:30::i;:::-;558:37;476:126;-1:-1:-1;;476:126:11:o;134:124::-;196:7;222:29;249:1;217:768:2;279:7;310:1;306;:5;298:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:35;364:1;:40;360:102;;426:3;420:9;;;;443:8;360:102;480:19;475:1;:24;471:84;;521:2;515:8;;;;537:7;471:84;573:11;568:1;:16;564:76;;606:2;600:8;;;;622:7;564:76;658:7;653:1;:12;649:72;;687:2;681:8;;;;703:7;649:72;739:5;734:1;:10;730:68;;766:1;760:7;;;;781:6;730:68;816:4;811:1;:9;807:67;;842:1;836:7;;;;857:6;807:67;892:3;887:1;:8;883:66;;917:1;911:7;;;;932:6;883:66;967:3;962:1;:8;958:20;;977:1;972:6;217:768;;;:::o;1210:902::-;1273:7;1304:1;1300;:5;1292:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1359:3:2;1376:15;;;:19;1372:98;;1411:8;;1372:98;;;1456:3;1450:9;;;;;1372:98;1483:14;;;:18;1479:95;;1517:7;;1479:95;;;1561:2;1555:8;;;;;1479:95;1587:14;;;:18;1583:95;;1621:7;;1583:95;;;1665:2;1659:8;;;;;1583:95;1691:14;;;:18;1687:95;;1725:7;;1687:95;;;1769:2;1763:8;;;;;1687:95;1795:13;;;:17;1791:92;;1828:6;;1791:92;;;1871:1;1865:7;;;;;1791:92;1900:3;1896:7;;:11;1892:86;;1923:6;;1892:86;;;1966:1;1960:7;;;;;1892:86;1995:3;1991:7;;:11;1987:86;;2018:6;;1987:86;;;2061:1;2055:7;;;;;1987:86;2090:3;2086:7;;:11;2082:23;;2099:6;;1210:902;;;:::o"
    },
    "contracts/test/FixedPointTest.sol:FixedPointTest": {
      "abi": [
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            }
          ],
          "name": "decode",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "",
              "type": "uint112"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "_x",
                  "type": "uint256"
                }
              ],
              "internalType": "struct FixedPoint.uq144x112",
              "name": "self",
              "type": "tuple"
            }
          ],
          "name": "decode144",
          "outputs": [
            {
              "internalType": "uint144",
              "name": "",
              "type": "uint144"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "other",
              "type": "tuple"
            }
          ],
          "name": "divuq",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint112",
              "name": "x",
              "type": "uint112"
            }
          ],
          "name": "encode",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint144",
              "name": "x",
              "type": "uint144"
            }
          ],
          "name": "encode144",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "_x",
                  "type": "uint256"
                }
              ],
              "internalType": "struct FixedPoint.uq144x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "numerator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "denominator",
              "type": "uint256"
            }
          ],
          "name": "fraction",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "other",
              "type": "tuple"
            }
          ],
          "name": "getGasCostOfDivuq",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "numerator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "denominator",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfFraction",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "other",
              "type": "tuple"
            }
          ],
          "name": "getGasCostOfMuluq",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            }
          ],
          "name": "getGasCostOfSqrt",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "y",
              "type": "uint256"
            }
          ],
          "name": "mul",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "_x",
                  "type": "uint256"
                }
              ],
              "internalType": "struct FixedPoint.uq144x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            },
            {
              "internalType": "int256",
              "name": "y",
              "type": "int256"
            }
          ],
          "name": "muli",
          "outputs": [
            {
              "internalType": "int256",
              "name": "",
              "type": "int256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "other",
              "type": "tuple"
            }
          ],
          "name": "muluq",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            }
          ],
          "name": "reciprocal",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "self",
              "type": "tuple"
            }
          ],
          "name": "sqrt",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint224",
                  "name": "_x",
                  "type": "uint224"
                }
              ],
              "internalType": "struct FixedPoint.uq112x112",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506118ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d173f7111610097578063c814e31411610066578063c814e31414610215578063ca2d029914610228578063ca74fcc01461023b578063d993d3791461024e576100f5565b80636d173f71146101bc57806389258451146101cf578063af35b769146101e2578063b1acad5c14610202576100f5565b80634fd04a40116100d35780634fd04a40146101495780635a606689146101695780635f9f4c3b1461017c578063644a478b1461019c576100f5565b80630f1530e4146100fa57806331f92b13146101235780633f1626c814610136575b600080fd5b61010d61010836600461146b565b610261565b60405161011a91906117e5565b60405180910390f35b61010d61013136600461130c565b61027c565b61010d61014436600461130c565b6102a3565b61015c61015736600461130c565b6102c2565b60405161011a9190611817565b61010d610177366004611351565b6102db565b61018f61018a36600461130c565b610309565b60405161011a9190611832565b6101af6101aa36600461146b565b610322565b60405161011a919061148c565b6101af6101ca366004611351565b61033d565b6101af6101dd366004611327565b610364565b6101f56101f0366004611385565b61037e565b60405161011a919061180d565b6101af61021036600461130c565b61039e565b6101f5610223366004611439565b6103c0565b61010d61023636600461140b565b6103d1565b61010d610249366004611351565b6103e2565b6101af61025c366004611351565b610410565b6102696112d0565b6102738383610437565b90505b92915050565b6102846112d0565b61029b61029636849003840184611397565b6105c6565b90505b919050565b6102ab6112d0565b61029b6102bd36849003840184611397565b6106fd565b600061029b6102d636849003840184611397565b61085d565b6102e36112d0565b6102736102f536859003850185611397565b61030436859003850185611397565b610874565b600061029b61031d368490038401846113e6565b610af0565b6000805a90506103328484610437565b505a90039392505050565b6000805a905061033261035536869003860186611397565b61030436869003860186611397565b600061027361037836859003850185611397565b83610af7565b6103866112e2565b61027361039836859003850185611397565b83610bbe565b6000805a90506103b66102bd36859003850185611397565b505a900392915050565b6103c86112e2565b61029b82610c4c565b6103d96112d0565b61029b82610c8d565b6103ea6112d0565b6102736103fc36859003850185611397565b61040b36859003850185611397565b610cca565b6000805a905061033261042836869003860186611397565b61040b36869003860186611397565b61043f6112d0565b60008211610482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906115bd565b60405180910390fd5b8261049c5750604080516020810190915260008152610276565b71ffffffffffffffffffffffffffffffffffff831161055257600082607085901b816104c457fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610276565b600061056e846e01000000000000000000000000000085610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6105ce6112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611788565b81600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660011415610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611753565b604051806020016040528083600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000816106d457fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509050919050565b6107056112d0565b815171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116116107a0576040518060200160405280610779607085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169052905061029e565b60006107cd83600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113b565b60ff03905060028160ff16816107df57fe5b0681039050604051806020016040528060028360700360ff16816107ff57fe5b0460ff166108348460ff1687600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529392505050565b5160701c6dffffffffffffffffffffffffffff1690565b61087c6112d0565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1615806108c5575081517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b156108df5750604080516020810190915260008152610276565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516111561096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116f6565b6000607060ff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16607060ff16887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601010190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611688565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529b9a5050505050505050505050565b5160701c90565b600080610b4884600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660008512610b2e5784610b33565b846000035b6e010000000000000000000000000000610f48565b90507f80000000000000000000000000000000000000000000000000000000000000008110610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116bf565b60008312610bb15780610bb6565b806000035b949350505050565b610bc66112e2565b6000821580610c0157505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610bfe57fe5b04145b610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611586565b60408051602081019091529081529392505050565b610c546112e2565b50604080516020810190915260709190911b7fffffffffffffffffffffffffffffffffffff000000000000000000000000000016815290565b610c956112d0565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610cd26112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611529565b815183517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811691161415610d77575060408051602081019091526e0100000000000000000000000000008152610276565b825171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911611610e5c57815183516000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169060701b7fffffffffffffffffffffffffffffffffffff00000000000000000000000000001681610e0357fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b6000610ebc6e01000000000000000000000000000085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529392505050565b6000806000610f578686611215565b9150915060008480610f6557fe5b868809905082811115610f79576001820391505b918290039181610f9757848381610f8c57fe5b049350505050610fe1565b848210610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061161a565b610fdb838387611260565b93505050505b9392505050565b600081610ff75750600061029e565b816001700100000000000000000000000000000000821061101d5760809190911c9060401b5b6801000000000000000082106110385760409190911c9060201b5b640100000000821061104f5760209190911c9060101b5b6201000082106110645760109190911c9060081b5b61010082106110785760089190911c9060041b5b6010821061108b5760049190911c9060021b5b600882106110975760011b5b60018185816110a257fe5b048201901c905060018185816110b457fe5b048201901c905060018185816110c657fe5b048201901c905060018185816110d857fe5b048201901c905060018185816110ea57fe5b048201901c905060018185816110fc57fe5b048201901c9050600181858161110e57fe5b048201901c9050600081858161112057fe5b0490508082106111305780611132565b815b95945050505050565b6000808211611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611495565b700100000000000000000000000000000000821061119657608091821c91015b6801000000000000000082106111ae57604091821c91015b64010000000082106111c257602091821c91015b6201000082106111d457601091821c91015b61010082106111e557600891821c91015b601082106111f557600491821c91015b6004821061120557600291821c91015b6002821061029e57600101919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611258576001820391505b509250929050565b6000818103821680838161127057fe5b04925080858161127c57fe5b04945080816000038161128b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215611306578081fd5b50919050565b60006020828403121561131d578081fd5b61027383836112f5565b60008060408385031215611339578081fd5b61134384846112f5565b946020939093013593505050565b60008060408385031215611363578182fd5b61136d84846112f5565b915061137c84602085016112f5565b90509250929050565b60008060408385031215611339578182fd5b6000602082840312156113a8578081fd5b6113b26020611851565b82357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146113dd578283fd5b81529392505050565b6000602082840312156113f7578081fd5b6114016020611851565b9135825250919050565b60006020828403121561141c578081fd5b81356dffffffffffffffffffffffffffff81168114610fe1578182fd5b60006020828403121561144a578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610fe1578182fd5b6000806040838503121561147d578182fd5b50508035926020909101359150565b90815260200190565b60208082526021908201527f4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a657260408201527f6f00000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4669786564506f696e743a3a64697675713a206f766572666c6f770000000000604082015260600190565b60208082526023908201527f4669786564506f696e743a3a64697675713a206469766973696f6e206279207a60408201527f65726f0000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604082015260600190565b60208082526026908201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260408201527f79207a65726f0000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604082015260600190565b6020808252601e908201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604082015260600190565b6020808252601f908201527f4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f7700604082015260600190565b6020808252601a908201527f4669786564506f696e743a3a6d756c693a206f766572666c6f77000000000000604082015260600190565b60208082526021908201527f4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77604082015260600190565b6020808252602a908201527f4669786564506f696e743a3a7265636970726f63616c3a207265636970726f6360408201527f616c206f66207a65726f00000000000000000000000000000000000000000000606082015260800190565b90517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561187057600080fd5b60405291905056fea26469706673582212205fe4dd4e0a768eed556a380eafe71c0862cf6cde351855821913d389f8bc0f8564736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18AE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D173F71 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC814E314 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC814E314 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xCA2D0299 EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0xCA74FCC0 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xD993D379 EQ PUSH2 0x24E JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x6D173F71 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x89258451 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAF35B769 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xB1ACAD5C EQ PUSH2 0x202 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x4FD04A40 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x4FD04A40 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x5A606689 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x5F9F4C3B EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x644A478B EQ PUSH2 0x19C JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0xF1530E4 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x31F92B13 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x3F1626C8 EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x261 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x17E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH2 0x10D PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1817 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x2DB JUMP JUMPDEST PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x309 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x1AA CALLDATASIZE PUSH1 0x4 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x148C JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x1327 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1385 JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x180D JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x39E JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0x1439 JUMP JUMPDEST PUSH2 0x3C0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x140B JUMP JUMPDEST PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x410 JUMP JUMPDEST PUSH2 0x269 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x273 DUP4 DUP4 PUSH2 0x437 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x284 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x29B PUSH2 0x296 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x5C6 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2AB PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x29B PUSH2 0x2BD CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x6FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B PUSH2 0x2D6 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x85D JUMP JUMPDEST PUSH2 0x2E3 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x2F5 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x304 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x874 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B PUSH2 0x31D CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x13E6 JUMP JUMPDEST PUSH2 0xAF0 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x332 DUP5 DUP5 PUSH2 0x437 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x332 PUSH2 0x355 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x304 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x273 PUSH2 0x378 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH2 0x386 PUSH2 0x12E2 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x398 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST DUP4 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x3B6 PUSH2 0x2BD CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3C8 PUSH2 0x12E2 JUMP JUMPDEST PUSH2 0x29B DUP3 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0x3D9 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x29B DUP3 PUSH2 0xC8D JUMP JUMPDEST PUSH2 0x3EA PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x3FC CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x40B CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0xCCA JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x332 PUSH2 0x428 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x40B CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x12D0 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x49C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x276 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x552 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0x4C4 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1651 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x276 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56E DUP5 PUSH15 0x10000000000000000000000000000 DUP6 PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1651 JUMP JUMPDEST PUSH2 0x5CE PUSH2 0x12D0 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x624 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1788 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1753 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 PUSH2 0x6D4 JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x705 PUSH2 0x12D0 JUMP JUMPDEST DUP2 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x779 PUSH1 0x70 DUP6 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL PUSH2 0xFE8 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE SWAP1 POP PUSH2 0x29E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CD DUP4 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x113B JUMP JUMPDEST PUSH1 0xFF SUB SWAP1 POP PUSH1 0x2 DUP2 PUSH1 0xFF AND DUP2 PUSH2 0x7DF JUMPI INVALID JUMPDEST MOD DUP2 SUB SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP4 PUSH1 0x70 SUB PUSH1 0xFF AND DUP2 PUSH2 0x7FF JUMPI INVALID JUMPDEST DIV PUSH1 0xFF AND PUSH2 0x834 DUP5 PUSH1 0xFF AND DUP8 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL PUSH2 0xFE8 JUMP JUMPDEST SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x87C PUSH2 0x12D0 JUMP JUMPDEST DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO DUP1 PUSH2 0x8C5 JUMPI POP DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO JUMPDEST ISZERO PUSH2 0x8DF JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x276 JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x70 DUP4 DUP2 SHR DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP1 DUP2 SWAP1 SHR DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP3 DUP6 MUL SWAP1 DUP3 DUP6 MUL SWAP1 DUP4 DUP8 MUL SWAP1 DUP6 DUP8 MUL SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND GT ISZERO PUSH2 0x96F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x70 PUSH1 0xFF AND DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x70 PUSH1 0xFF AND DUP9 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD ADD ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1688 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB48 DUP5 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP6 SLT PUSH2 0xB2E JUMPI DUP5 PUSH2 0xB33 JUMP JUMPDEST DUP5 PUSH1 0x0 SUB JUMPDEST PUSH15 0x10000000000000000000000000000 PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x16BF JUMP JUMPDEST PUSH1 0x0 DUP4 SLT PUSH2 0xBB1 JUMPI DUP1 PUSH2 0xBB6 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBC6 PUSH2 0x12E2 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xC01 JUMPI POP POP DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0xBFE JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xC37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1586 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC54 PUSH2 0x12E2 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0xC95 PUSH2 0x12D0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0xCD2 PUSH2 0x12D0 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD28 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1529 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xD77 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH15 0x10000000000000000000000000000 DUP2 MSTORE PUSH2 0x276 JUMP JUMPDEST DUP3 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT PUSH2 0xE5C JUMPI DUP2 MLOAD DUP4 MLOAD PUSH1 0x0 SWAP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x70 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0xE03 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBC PUSH15 0x10000000000000000000000000000 DUP6 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xF57 DUP7 DUP7 PUSH2 0x1215 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xF65 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xF79 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xF97 JUMPI DUP5 DUP4 DUP2 PUSH2 0xF8C JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xFE1 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xFD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x161A JUMP JUMPDEST PUSH2 0xFDB DUP4 DUP4 DUP8 PUSH2 0x1260 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFF7 JUMPI POP PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x101D JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x1038 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x104F JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x1064 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1078 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x108B JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x1097 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10A2 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10B4 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10C6 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10D8 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10EA JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10FC JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x110E JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1120 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1130 JUMPI DUP1 PUSH2 0x1132 JUMP JUMPDEST DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1176 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1495 JUMP JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x1196 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x11AE JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x11C2 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x11D4 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x11E5 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x11F5 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x1205 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x29E JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x1258 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1270 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x127C JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x128B JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1306 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x131D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x273 DUP4 DUP4 PUSH2 0x12F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1339 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1343 DUP5 DUP5 PUSH2 0x12F5 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1363 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x136D DUP5 DUP5 PUSH2 0x12F5 JUMP JUMPDEST SWAP2 POP PUSH2 0x137C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x12F5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1339 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13A8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x13B2 PUSH1 0x20 PUSH2 0x1851 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x13DD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F7 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1401 PUSH1 0x20 PUSH2 0x1851 JUMP JUMPDEST SWAP2 CALLDATALOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x141C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xFE1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xFE1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x147D JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4269744D6174683A3A6D6F73745369676E69666963616E744269743A207A6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6F00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A64697675713A206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A64697675713A206469766973696F6E206279207A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65726F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206469766973696F6E2062 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x79207A65726F0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C75713A2073756D206F766572666C6F7700 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C693A206F766572666C6F77000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C75713A207570706572206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4669786564506F696E743A3A7265636970726F63616C3A206F766572666C6F77 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A7265636970726F63616C3A207265636970726F63 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x616C206F66207A65726F00000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xE4 0xDD 0x4E EXP PUSH23 0x8EED556A380EAFE71C0862CF6CDE351855821913D389F8 0xBC 0xF DUP6 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "145:2873:12:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d173f7111610097578063c814e31411610066578063c814e31414610215578063ca2d029914610228578063ca74fcc01461023b578063d993d3791461024e576100f5565b80636d173f71146101bc57806389258451146101cf578063af35b769146101e2578063b1acad5c14610202576100f5565b80634fd04a40116100d35780634fd04a40146101495780635a606689146101695780635f9f4c3b1461017c578063644a478b1461019c576100f5565b80630f1530e4146100fa57806331f92b13146101235780633f1626c814610136575b600080fd5b61010d61010836600461146b565b610261565b60405161011a91906117e5565b60405180910390f35b61010d61013136600461130c565b61027c565b61010d61014436600461130c565b6102a3565b61015c61015736600461130c565b6102c2565b60405161011a9190611817565b61010d610177366004611351565b6102db565b61018f61018a36600461130c565b610309565b60405161011a9190611832565b6101af6101aa36600461146b565b610322565b60405161011a919061148c565b6101af6101ca366004611351565b61033d565b6101af6101dd366004611327565b610364565b6101f56101f0366004611385565b61037e565b60405161011a919061180d565b6101af61021036600461130c565b61039e565b6101f5610223366004611439565b6103c0565b61010d61023636600461140b565b6103d1565b61010d610249366004611351565b6103e2565b6101af61025c366004611351565b610410565b6102696112d0565b6102738383610437565b90505b92915050565b6102846112d0565b61029b61029636849003840184611397565b6105c6565b90505b919050565b6102ab6112d0565b61029b6102bd36849003840184611397565b6106fd565b600061029b6102d636849003840184611397565b61085d565b6102e36112d0565b6102736102f536859003850185611397565b61030436859003850185611397565b610874565b600061029b61031d368490038401846113e6565b610af0565b6000805a90506103328484610437565b505a90039392505050565b6000805a905061033261035536869003860186611397565b61030436869003860186611397565b600061027361037836859003850185611397565b83610af7565b6103866112e2565b61027361039836859003850185611397565b83610bbe565b6000805a90506103b66102bd36859003850185611397565b505a900392915050565b6103c86112e2565b61029b82610c4c565b6103d96112d0565b61029b82610c8d565b6103ea6112d0565b6102736103fc36859003850185611397565b61040b36859003850185611397565b610cca565b6000805a905061033261042836869003860186611397565b61040b36869003860186611397565b61043f6112d0565b60008211610482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906115bd565b60405180910390fd5b8261049c5750604080516020810190915260008152610276565b71ffffffffffffffffffffffffffffffffffff831161055257600082607085901b816104c457fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610276565b600061056e846e01000000000000000000000000000085610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6105ce6112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611788565b81600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660011415610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611753565b604051806020016040528083600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000816106d457fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509050919050565b6107056112d0565b815171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116116107a0576040518060200160405280610779607085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169052905061029e565b60006107cd83600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113b565b60ff03905060028160ff16816107df57fe5b0681039050604051806020016040528060028360700360ff16816107ff57fe5b0460ff166108348460ff1687600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529392505050565b5160701c6dffffffffffffffffffffffffffff1690565b61087c6112d0565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1615806108c5575081517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b156108df5750604080516020810190915260008152610276565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516111561096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116f6565b6000607060ff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16607060ff16887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601010190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611688565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529b9a5050505050505050505050565b5160701c90565b600080610b4884600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660008512610b2e5784610b33565b846000035b6e010000000000000000000000000000610f48565b90507f80000000000000000000000000000000000000000000000000000000000000008110610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116bf565b60008312610bb15780610bb6565b806000035b949350505050565b610bc66112e2565b6000821580610c0157505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610bfe57fe5b04145b610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611586565b60408051602081019091529081529392505050565b610c546112e2565b50604080516020810190915260709190911b7fffffffffffffffffffffffffffffffffffff000000000000000000000000000016815290565b610c956112d0565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610cd26112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611529565b815183517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811691161415610d77575060408051602081019091526e0100000000000000000000000000008152610276565b825171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911611610e5c57815183516000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169060701b7fffffffffffffffffffffffffffffffffffff00000000000000000000000000001681610e0357fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b6000610ebc6e01000000000000000000000000000085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529392505050565b6000806000610f578686611215565b9150915060008480610f6557fe5b868809905082811115610f79576001820391505b918290039181610f9757848381610f8c57fe5b049350505050610fe1565b848210610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061161a565b610fdb838387611260565b93505050505b9392505050565b600081610ff75750600061029e565b816001700100000000000000000000000000000000821061101d5760809190911c9060401b5b6801000000000000000082106110385760409190911c9060201b5b640100000000821061104f5760209190911c9060101b5b6201000082106110645760109190911c9060081b5b61010082106110785760089190911c9060041b5b6010821061108b5760049190911c9060021b5b600882106110975760011b5b60018185816110a257fe5b048201901c905060018185816110b457fe5b048201901c905060018185816110c657fe5b048201901c905060018185816110d857fe5b048201901c905060018185816110ea57fe5b048201901c905060018185816110fc57fe5b048201901c9050600181858161110e57fe5b048201901c9050600081858161112057fe5b0490508082106111305780611132565b815b95945050505050565b6000808211611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611495565b700100000000000000000000000000000000821061119657608091821c91015b6801000000000000000082106111ae57604091821c91015b64010000000082106111c257602091821c91015b6201000082106111d457601091821c91015b61010082106111e557600891821c91015b601082106111f557600491821c91015b6004821061120557600291821c91015b6002821061029e57600101919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611258576001820391505b509250929050565b6000818103821680838161127057fe5b04925080858161127c57fe5b04945080816000038161128b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215611306578081fd5b50919050565b60006020828403121561131d578081fd5b61027383836112f5565b60008060408385031215611339578081fd5b61134384846112f5565b946020939093013593505050565b60008060408385031215611363578182fd5b61136d84846112f5565b915061137c84602085016112f5565b90509250929050565b60008060408385031215611339578182fd5b6000602082840312156113a8578081fd5b6113b26020611851565b82357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146113dd578283fd5b81529392505050565b6000602082840312156113f7578081fd5b6114016020611851565b9135825250919050565b60006020828403121561141c578081fd5b81356dffffffffffffffffffffffffffff81168114610fe1578182fd5b60006020828403121561144a578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610fe1578182fd5b6000806040838503121561147d578182fd5b50508035926020909101359150565b90815260200190565b60208082526021908201527f4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a657260408201527f6f00000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4669786564506f696e743a3a64697675713a206f766572666c6f770000000000604082015260600190565b60208082526023908201527f4669786564506f696e743a3a64697675713a206469766973696f6e206279207a60408201527f65726f0000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604082015260600190565b60208082526026908201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260408201527f79207a65726f0000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604082015260600190565b6020808252601e908201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604082015260600190565b6020808252601f908201527f4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f7700604082015260600190565b6020808252601a908201527f4669786564506f696e743a3a6d756c693a206f766572666c6f77000000000000604082015260600190565b60208082526021908201527f4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77604082015260600190565b6020808252602a908201527f4669786564506f696e743a3a7265636970726f63616c3a207265636970726f6360408201527f616c206f66207a65726f00000000000000000000000000000000000000000000606082015260800190565b90517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561187057600080fd5b60405291905056fea26469706673582212205fe4dd4e0a768eed556a380eafe71c0862cf6cde351855821913d389f8bc0f8564736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D173F71 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xC814E314 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC814E314 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xCA2D0299 EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0xCA74FCC0 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xD993D379 EQ PUSH2 0x24E JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x6D173F71 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x89258451 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAF35B769 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xB1ACAD5C EQ PUSH2 0x202 JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0x4FD04A40 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x4FD04A40 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x5A606689 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x5F9F4C3B EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x644A478B EQ PUSH2 0x19C JUMPI PUSH2 0xF5 JUMP JUMPDEST DUP1 PUSH4 0xF1530E4 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x31F92B13 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x3F1626C8 EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x261 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x17E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH2 0x10D PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1817 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x2DB JUMP JUMPDEST PUSH2 0x18F PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x309 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x1AA CALLDATASIZE PUSH1 0x4 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x148C JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x1327 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1385 JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x180D JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0x130C JUMP JUMPDEST PUSH2 0x39E JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0x1439 JUMP JUMPDEST PUSH2 0x3C0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x140B JUMP JUMPDEST PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x410 JUMP JUMPDEST PUSH2 0x269 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x273 DUP4 DUP4 PUSH2 0x437 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x284 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x29B PUSH2 0x296 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x5C6 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2AB PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x29B PUSH2 0x2BD CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x6FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B PUSH2 0x2D6 CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x85D JUMP JUMPDEST PUSH2 0x2E3 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x2F5 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x304 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x874 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B PUSH2 0x31D CALLDATASIZE DUP5 SWAP1 SUB DUP5 ADD DUP5 PUSH2 0x13E6 JUMP JUMPDEST PUSH2 0xAF0 JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x332 DUP5 DUP5 PUSH2 0x437 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x332 PUSH2 0x355 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x304 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x273 PUSH2 0x378 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST DUP4 PUSH2 0xAF7 JUMP JUMPDEST PUSH2 0x386 PUSH2 0x12E2 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x398 CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST DUP4 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x3B6 PUSH2 0x2BD CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST POP GAS SWAP1 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3C8 PUSH2 0x12E2 JUMP JUMPDEST PUSH2 0x29B DUP3 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0x3D9 PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x29B DUP3 PUSH2 0xC8D JUMP JUMPDEST PUSH2 0x3EA PUSH2 0x12D0 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x3FC CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x40B CALLDATASIZE DUP6 SWAP1 SUB DUP6 ADD DUP6 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0xCCA JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x332 PUSH2 0x428 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x40B CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x12D0 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x49C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x276 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x552 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0x4C4 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1651 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x276 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56E DUP5 PUSH15 0x10000000000000000000000000000 DUP6 PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1651 JUMP JUMPDEST PUSH2 0x5CE PUSH2 0x12D0 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x624 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1788 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1753 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP4 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP2 PUSH2 0x6D4 JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x705 PUSH2 0x12D0 JUMP JUMPDEST DUP2 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x779 PUSH1 0x70 DUP6 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL PUSH2 0xFE8 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE SWAP1 POP PUSH2 0x29E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CD DUP4 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x113B JUMP JUMPDEST PUSH1 0xFF SUB SWAP1 POP PUSH1 0x2 DUP2 PUSH1 0xFF AND DUP2 PUSH2 0x7DF JUMPI INVALID JUMPDEST MOD DUP2 SUB SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP4 PUSH1 0x70 SUB PUSH1 0xFF AND DUP2 PUSH2 0x7FF JUMPI INVALID JUMPDEST DIV PUSH1 0xFF AND PUSH2 0x834 DUP5 PUSH1 0xFF AND DUP8 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL PUSH2 0xFE8 JUMP JUMPDEST SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x87C PUSH2 0x12D0 JUMP JUMPDEST DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO DUP1 PUSH2 0x8C5 JUMPI POP DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO JUMPDEST ISZERO PUSH2 0x8DF JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x276 JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x70 DUP4 DUP2 SHR DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP1 DUP2 SWAP1 SHR DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP3 DUP6 MUL SWAP1 DUP3 DUP6 MUL SWAP1 DUP4 DUP8 MUL SWAP1 DUP6 DUP8 MUL SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND GT ISZERO PUSH2 0x96F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x70 PUSH1 0xFF AND DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x70 PUSH1 0xFF AND DUP9 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADD ADD ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1688 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB48 DUP5 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP6 SLT PUSH2 0xB2E JUMPI DUP5 PUSH2 0xB33 JUMP JUMPDEST DUP5 PUSH1 0x0 SUB JUMPDEST PUSH15 0x10000000000000000000000000000 PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 LT PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x16BF JUMP JUMPDEST PUSH1 0x0 DUP4 SLT PUSH2 0xBB1 JUMPI DUP1 PUSH2 0xBB6 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBC6 PUSH2 0x12E2 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xC01 JUMPI POP POP DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0xBFE JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xC37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1586 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC54 PUSH2 0x12E2 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0xC95 PUSH2 0x12D0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x70 SWAP2 SWAP1 SWAP2 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0xCD2 PUSH2 0x12D0 JUMP JUMPDEST DUP2 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD28 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1529 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xD77 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH15 0x10000000000000000000000000000 DUP2 MSTORE PUSH2 0x276 JUMP JUMPDEST DUP3 MLOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT PUSH2 0xE5C JUMPI DUP2 MLOAD DUP4 MLOAD PUSH1 0x0 SWAP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x70 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0xE03 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBC PUSH15 0x10000000000000000000000000000 DUP6 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF48 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xF57 DUP7 DUP7 PUSH2 0x1215 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xF65 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xF79 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xF97 JUMPI DUP5 DUP4 DUP2 PUSH2 0xF8C JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xFE1 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xFD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x161A JUMP JUMPDEST PUSH2 0xFDB DUP4 DUP4 DUP8 PUSH2 0x1260 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFF7 JUMPI POP PUSH1 0x0 PUSH2 0x29E JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x101D JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x1038 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x104F JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x1064 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1078 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x108B JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x1097 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10A2 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10B4 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10C6 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10D8 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10EA JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10FC JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x110E JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1120 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1130 JUMPI DUP1 PUSH2 0x1132 JUMP JUMPDEST DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x1176 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP1 PUSH2 0x1495 JUMP JUMPDEST PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x1196 JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x11AE JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x11C2 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x11D4 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x11E5 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x11F5 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x1205 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x29E JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x1258 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1270 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x127C JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x128B JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1306 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x131D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x273 DUP4 DUP4 PUSH2 0x12F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1339 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1343 DUP5 DUP5 PUSH2 0x12F5 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1363 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x136D DUP5 DUP5 PUSH2 0x12F5 JUMP JUMPDEST SWAP2 POP PUSH2 0x137C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x12F5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1339 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13A8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x13B2 PUSH1 0x20 PUSH2 0x1851 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x13DD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F7 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1401 PUSH1 0x20 PUSH2 0x1851 JUMP JUMPDEST SWAP2 CALLDATALOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x141C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xFE1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xFE1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x147D JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4269744D6174683A3A6D6F73745369676E69666963616E744269743A207A6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6F00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A64697675713A206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A64697675713A206469766973696F6E206279207A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65726F0000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206469766973696F6E2062 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x79207A65726F0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C75713A2073756D206F766572666C6F7700 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C693A206F766572666C6F77000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C75713A207570706572206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4669786564506F696E743A3A7265636970726F63616C3A206F766572666C6F77 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A7265636970726F63616C3A207265636970726F63 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x616C206F66207A65726F00000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1870 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xE4 0xDD 0x4E EXP PUSH23 0x8EED556A380EAFE71C0862CF6CDE351855821913D389F8 0xBC 0xF DUP6 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "145:2873:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:177;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2489:159;;;;;;:::i;:::-;;:::i;2654:147::-;;;;;;:::i;:::-;;:::i;439:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1029:221::-;;;;;;:::i;:::-;;:::i;576:137::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2244:239::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1256:283::-;;;;;;:::i;:::-;;:::i;884:139::-;;;;;;:::i;:::-;;:::i;719:159::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2807:209::-;;;;;;:::i;:::-;;:::i;304:129::-;;;;;;:::i;:::-;;:::i;175:123::-;;;;;;:::i;:::-;;:::i;1545:221::-;;;;;;:::i;:::-;;:::i;1772:283::-;;;;;;:::i;:::-;;:::i;2061:177::-;2142:27;;:::i;:::-;2188:43;2208:9;2219:11;2188:19;:43::i;:::-;2181:50;;2061:177;;;;;:::o;2489:159::-;2568:27;;:::i;:::-;2614;;;;;;;;2636:4;2614:27;:::i;:::-;:21;:27::i;:::-;2607:34;;2489:159;;;;:::o;2654:147::-;2727:27;;:::i;:::-;2773:21;;;;;;;;2789:4;2773:21;:::i;:::-;:15;:21::i;439:131::-;514:7;540:23;;;;;;;;558:4;540:23;:::i;:::-;:17;:23::i;1029:221::-;1164:27;;:::i;:::-;1214:29;;;;;;;;1231:4;1214:29;:::i;:::-;;;;;;;;1237:5;1214:29;:::i;:::-;:16;:29::i;576:137::-;654:7;680:26;;;;;;;;701:4;680:26;:::i;:::-;:20;:26::i;2244:239::-;2337:7;2356:17;2376:9;2356:29;;2395:43;2415:9;2426:11;2395:19;:43::i;:::-;;2467:9;2455:21;;;2244:239;-1:-1:-1;;;2244:239:12:o;1256:283::-;1403:7;1426:17;1446:9;1426:29;-1:-1:-1;1465:29:12;;;;;;;;1482:4;1465:29;:::i;:::-;;;;;;;;1488:5;1465:29;:::i;884:139::-;967:6;992:24;;;;;;;;1008:4;992:24;:::i;:::-;1014:1;992:15;:24::i;719:159::-;802:27;;:::i;:::-;848:23;;;;;;;;863:4;848:23;:::i;:::-;869:1;848:14;:23::i;2807:209::-;2892:7;2911:17;2931:9;2911:29;-1:-1:-1;2950:21:12;;;;;;;;2966:4;2950:21;:::i;:::-;;3000:9;2988:21;;;2807:209;-1:-1:-1;;2807:209:12:o;304:129::-;357:27;;:::i;:::-;403:23;424:1;403:20;:23::i;175:123::-;225:27;;:::i;:::-;271:20;289:1;271:17;:20::i;1545:221::-;1680:27;;:::i;:::-;1730:29;;;;;;;;1747:4;1730:29;:::i;:::-;;;;;;;;1753:5;1730:29;:::i;:::-;:16;:29::i;1772:283::-;1919:7;1942:17;1962:9;1942:29;-1:-1:-1;1981:29:12;;;;;;;;1998:4;1981:29;:::i;:::-;;;;;;;;2004:5;1981:29;:::i;4526:706:3:-;4607:16;;:::i;:::-;4657:1;4643:11;:15;4635:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;4715:14;4711:50;;-1:-1:-1;4738:23:3;;;;;;;;;-1:-1:-1;4738:23:3;;4731:30;;4711:50;4776:24;;;4772:454;;4816:14;4861:11;531:3;4834:23;;;4861:11;4833:39;;;;;;-1:-1:-1;4894:21:3;;;;4886:64;;;;;;;;;;;;:::i;:::-;4971:26;;;;;;;;4989:6;4971:26;;;;;4964:33;;;;;4772:454;5028:14;5045:45;5061:9;571:31;5078:11;5045:15;:45::i;:::-;5028:62;-1:-1:-1;5112:21:3;;;;5104:64;;;;;;;;;;;;:::i;5320:286::-;5386:16;;:::i;:::-;5422:7;;:12;;5414:67;;;;;;;;;;;;:::i;:::-;5499:4;:7;;;:12;;5510:1;5499:12;;5491:57;;;;;;;;;;;;:::i;:::-;5565:34;;;;;;;;5590:4;:7;;;5583:14;;650:59;5583:14;;;;;;5565:34;;;;;5558:41;;5320:286;;;:::o;5683:450::-;5743:16;;:::i;:::-;5775:7;;:22;;;;;;5771:120;;5820:60;;;;;;;;5838:40;5874:3;5862:4;:7;;;5854:16;;:23;;5838:15;:40::i;:::-;5820:60;;;;5813:67;-1:-1:-1;5813:67:3;;5771:120;5901:19;5929:35;5956:4;:7;;;5929:35;;:26;:35::i;:::-;5923:3;:41;5901:63;;6007:1;5991:13;:17;;;;;;;;5974:34;;;;6025:101;;;;;;;;6122:1;6105:13;6099:3;:19;6098:25;;;;;;;;6043:81;;:50;6079:13;6059:33;;6067:4;:7;;;6059:16;;:33;;6043:15;:50::i;:::-;:81;;6025:101;;;;6018:108;5683:450;-1:-1:-1;;;5683:450:3:o;1264:125::-;1360:7;531:3;1360:21;;;;1264:125::o;2384:1263::-;2469:16;;:::i;:::-;2501:7;;:12;;;;:29;;-1:-1:-1;2517:8:3;;:13;;;2501:29;2497:79;;;-1:-1:-1;2553:12:3;;;;;;;;;-1:-1:-1;2553:12:3;;2546:19;;2497:79;2614:7;;2757:8;;2614:21;531:3;2614:21;;;;;;2684:20;;;2757:22;;;;;;;2829:21;;;;2918:33;;;;2986;;;;3065;;;;3144;;;;2614:21;3254:20;;;;3246:66;;;;;;;;;;;;:::i;:::-;3387:11;531:3;3465:19;;:5;:19;;;;3401:84;;3448:13;3401:60;;3432:13;3401:44;;531:3;3409:19;;:5;:19;;;;3401:28;;:44;:60;:84;3387:98;;3560:2;3545:18;;:3;:18;;3537:62;;;;;;;;;;;;:::i;:::-;3617:23;;;;;;;;;;;;;;;;2384:1263;-1:-1:-1;;;;;;;;;;;2384:1263:3:o;1472:128::-;1571:7;531:3;1571:21;;1472:128::o;2031:268::-;2101:6;2119:9;2131:55;2147:4;:7;;;2131:55;;2168:1;2164;:5;:14;;2177:1;2164:14;;;2173:1;2172:2;;2164:14;571:31;2131:15;:55::i;:::-;2119:67;;2208:6;2204:1;:10;2196:49;;;;;;;;;;;;:::i;:::-;2266:1;2262;:5;:30;;2290:1;2262:30;;;2278:1;2270:10;;2262:30;2255:37;2031:268;-1:-1:-1;;;;2031:268:3:o;1694:237::-;1764:16;;:::i;:::-;1792:9;1823:6;;;:42;;-1:-1:-1;;1858:7:3;;1833:32;;1838:11;;;;1853:1;1838:11;1853:1;1833:21;;;;;:32;1823:42;1815:80;;;;;;;;;;;;:::i;:::-;1912:12;;;;;;;;;;;;;1694:237;-1:-1:-1;;;1694:237:3:o;1051:130::-;1104:16;;:::i;:::-;-1:-1:-1;1139:35:3;;;;;;;;;531:3;1149:24;;;;;;1139:35;;;1051:130::o;878:127::-;928:16;;:::i;:::-;-1:-1:-1;963:35:3;;;;;;;;;531:3;973:24;;;;;;963:35;;;878:127::o;3717:693::-;3802:16;;:::i;:::-;3838:8;;:12;;3830:60;;;;;;;;;;;;:::i;:::-;3915:8;;3904:7;;:19;;;;;;;3900:81;;;-1:-1:-1;3946:24:3;;;;;;;;;571:31;3946:24;;3939:31;;3900:81;3994:7;;:22;;;;;;3990:232;;4083:8;;4057:7;;4032:13;;4048:43;;;531:3;4049:30;;;4048:43;;;;;;;-1:-1:-1;4113:20:3;;;;4105:60;;;;;;;;;;;;:::i;3990:232::-;4232:14;4249:40;571:31;4271:4;:7;;;4249:40;;4280:5;:8;;;4249:40;;:15;:40::i;:::-;4232:57;-1:-1:-1;4307:21:3;;;;4299:61;;;;;;;;;;;;:::i;:::-;4377:26;;;;;;;;;;;;;;;;3717:693;-1:-1:-1;;;3717:693:3:o;897:373:4:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;:::i;:::-;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;382:1197:1:-;430:7;453:6;449:20;;-1:-1:-1;468:1:1;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;382:1197;-1:-1:-1;;;;;382:1197:1:o;217:768:2:-;279:7;310:1;306;:5;298:51;;;;;;;;;;;;:::i;:::-;369:35;364:1;:40;360:102;;426:3;420:9;;;;443:8;360:102;480:19;475:1;:24;471:84;;521:2;515:8;;;;537:7;471:84;573:11;568:1;:16;564:76;;606:2;600:8;;;;622:7;564:76;658:7;653:1;:12;649:72;;687:2;681:8;;;;703:7;649:72;739:5;734:1;:10;730:68;;766:1;760:7;;;;781:6;730:68;816:4;811:1;:9;807:67;;842:1;836:7;;;;857:6;807:67;892:3;887:1;:8;883:66;;917:1;911:7;;;;932:6;883:66;967:3;962:1;:8;958:20;;977:1;972:6;217:768;;;:::o;216:206:4:-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:4:o;-1:-1:-1:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;176:159::-;;288:2;279:6;274:3;270:16;266:25;263:2;;;-1:-1;;294:12;263:2;-1:-1;314:15;256:79;-1:-1;256:79::o;1818:297::-;;1950:2;1938:9;1929:7;1925:23;1921:32;1918:2;;;-1:-1;;1956:12;1918:2;2018:81;2091:7;2067:22;2018:81;:::i;2122:420::-;;;2270:2;2258:9;2249:7;2245:23;2241:32;2238:2;;;-1:-1;;2276:12;2238:2;2338:81;2411:7;2387:22;2338:81;:::i;:::-;2328:91;2456:2;2494:22;;;;71:20;;-1:-1;;;2232:310::o;2549:478::-;;;2726:2;2714:9;2705:7;2701:23;2697:32;2694:2;;;-1:-1;;2732:12;2694:2;2794:81;2867:7;2843:22;2794:81;:::i;:::-;2784:91;;2930:81;3003:7;2912:2;2983:9;2979:22;2930:81;:::i;:::-;2920:91;;2688:339;;;;;:::o;3034:422::-;;;3183:2;3171:9;3162:7;3158:23;3154:32;3151:2;;;-1:-1;;3189:12;3463:293;;3593:2;3581:9;3572:7;3568:23;3564:32;3561:2;;;-1:-1;;3599:12;3561:2;527:20;3593:2;527:20;:::i;:::-;1624:6;1611:20;18472:58;19079:5;18461:70;19054:5;19051:35;19041:2;;-1:-1;;19090:12;19041:2;602:75;;609:16;3555:201;-1:-1;;;3555:201::o;4067:293::-;;4197:2;4185:9;4176:7;4172:23;4168:32;4165:2;;;-1:-1;;4203:12;4165:2;1092:20;4197:2;1092:20;:::i;:::-;1748;;1167:75;;-1:-1;1174:16;4159:201;-1:-1;4159:201::o;4367:241::-;;4471:2;4459:9;4450:7;4446:23;4442:32;4439:2;;;-1:-1;;4477:12;4439:2;1350:6;1337:20;18232:30;18831:5;18221:42;18806:5;18803:35;18793:2;;-1:-1;;18842:12;4615:241;;4719:2;4707:9;4698:7;4694:23;4690:32;4687:2;;;-1:-1;;4725:12;4687:2;1487:6;1474:20;18348:38;18955:5;18337:50;18930:5;18927:35;18917:2;;-1:-1;;18966:12;4863:366;;;4984:2;4972:9;4963:7;4959:23;4955:32;4952:2;;;-1:-1;;4990:12;4952:2;-1:-1;;1748:20;;;5142:2;5181:22;;;1748:20;;-1:-1;4946:283::o;10992:218::-;5305:36;;;11117:2;11102:18;;11088:122::o;11217:416::-;11417:2;11431:47;;;5578:2;11402:18;;;18013:19;5614:34;18053:14;;;5594:55;5683:3;5669:12;;;5662:25;5706:12;;;11388:245::o;11640:416::-;11840:2;11854:47;;;5957:2;11825:18;;;18013:19;5993:29;18053:14;;;5973:50;6042:12;;;11811:245::o;12063:416::-;12263:2;12277:47;;;6293:2;12248:18;;;18013:19;6329:34;18053:14;;;6309:55;6398:5;6384:12;;;6377:27;6423:12;;;12234:245::o;12486:416::-;12686:2;12700:47;;;6674:2;12671:18;;;18013:19;6710:27;18053:14;;;6690:48;6757:12;;;12657:245::o;12909:416::-;13109:2;13123:47;;;7008:2;13094:18;;;18013:19;7044:34;18053:14;;;7024:55;7113:8;7099:12;;;7092:30;7141:12;;;13080:245::o;13332:416::-;13532:2;13546:47;;;7392:2;13517:18;;;18013:19;7428:28;18053:14;;;7408:49;7476:12;;;13503:245::o;13755:416::-;13955:2;13969:47;;;7727:2;13940:18;;;18013:19;7763:32;18053:14;;;7743:53;7815:12;;;13926:245::o;14178:416::-;14378:2;14392:47;;;8066:2;14363:18;;;18013:19;8102:33;18053:14;;;8082:54;8155:12;;;14349:245::o;14601:416::-;14801:2;14815:47;;;8406:2;14786:18;;;18013:19;8442:28;18053:14;;;8422:49;8490:12;;;14772:245::o;15024:416::-;15224:2;15238:47;;;8741:2;15209:18;;;18013:19;8777:34;18053:14;;;8757:55;8846:3;8832:12;;;8825:25;8869:12;;;15195:245::o;15447:416::-;15647:2;15661:47;;;15632:18;;;18013:19;9156:34;18053:14;;;9136:55;9210:12;;;15618:245::o;15870:416::-;16070:2;16084:47;;;9461:2;16055:18;;;18013:19;9497:34;18053:14;;;9477:55;9566:12;9552;;;9545:34;9598:12;;;16041:245::o;16293:326::-;9898:23;;18472:58;18461:70;10713:37;;16472:2;16457:18;;16443:176::o;16626:326::-;10292:23;;5305:36;;16805:2;16790:18;;16776:176::o;16959:222::-;18232:30;18221:42;;;;10483:37;;17086:2;17071:18;;17057:124::o;17188:222::-;18348:38;18337:50;;;;10603:37;;17315:2;17300:18;;17286:124::o;17646:256::-;17708:2;17702:9;17734:17;;;17809:18;17794:34;;17830:22;;;17791:62;17788:2;;;17866:1;;17856:12;17788:2;17708;17875:22;17686:216;;-1:-1;17686:216::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"decode\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"\",\"type\":\"uint112\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_x\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.uq144x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"decode144\",\"outputs\":[{\"internalType\":\"uint144\",\"name\":\"\",\"type\":\"uint144\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"divuq\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint112\",\"name\":\"x\",\"type\":\"uint112\"}],\"name\":\"encode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint144\",\"name\":\"x\",\"type\":\"uint144\"}],\"name\":\"encode144\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_x\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.uq144x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"fraction\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"getGasCostOfDivuq\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfFraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"getGasCostOfMuluq\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"getGasCostOfSqrt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"mul\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_x\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.uq144x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"muli\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"other\",\"type\":\"tuple\"}],\"name\":\"muluq\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"reciprocal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"self\",\"type\":\"tuple\"}],\"name\":\"sqrt\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"internalType\":\"struct FixedPoint.uq112x112\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/FixedPointTest.sol\":\"FixedPointTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0xc2389737a1d4954f93ed88099f8833ccc350a62b8b29b61c2a24f237eb4649bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d95218a6f0c7c5030e1f81aabcfe297449bf8bb92fcac1c4ba9bcfc8d61e62b\",\"dweb:/ipfs/QmXzJQLQfgqCuxL5JGMrKRQf5ziRNvQiQkNK3ZK6Lkn4CR\"]},\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0xa4d662f44b982fc9aa6542249aa79b2b07b3e34d5cdaa03720d3d471ac07f5de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d40d6c87edb8699d5c5c80344b642a516e0a071f173d393678fee58bbc5fde5\",\"dweb:/ipfs/QmXfp4W5jAdpcsv8VTP8RWsPcmASEtmzF9Xg9xehKK7Xdm\"]},\"contracts/libraries/FixedPoint.sol\":{\"keccak256\":\"0xba90ab07a7e7870d349fd22dda12b02b78a2b5c0f797de591115cde1ae3e47b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b91731ebb4825bcd8512fbf9721d602c298a18392919ddf800f3394231090cb4\",\"dweb:/ipfs/QmUNu1dqnNMyjUeD23KheR1ACVvWmP1T6SmH55Q2kS4nwS\"]},\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x074f43cf798f046118ed21bb9859a7fa1074b9581fe315c8702d6d292fdb2784\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://55a5cb6c5ae9ccc1e6870315bfa5f23f4c758db606f6a292fdff2224fcec082e\",\"dweb:/ipfs/QmRZayK4DWdWHaape9XcVj6VobzX7en7Tejk7gbzv7CHTy\"]},\"contracts/test/FixedPointTest.sol\":{\"keccak256\":\"0x652a64ce876f0a98002e53e627e84a139cde1158ee8b98fccc1e6b528f48dcb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://75b989fcd026097d9ca90b42808968901ba28744c7332b6cf2848b09ebd48869\",\"dweb:/ipfs/Qmd6Eov84EyZsx25ba8guwYxZjtJ2QAvVHTYeKmKTPkniP\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506118ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d173f7111610097578063c814e31411610066578063c814e31414610215578063ca2d029914610228578063ca74fcc01461023b578063d993d3791461024e576100f5565b80636d173f71146101bc57806389258451146101cf578063af35b769146101e2578063b1acad5c14610202576100f5565b80634fd04a40116100d35780634fd04a40146101495780635a606689146101695780635f9f4c3b1461017c578063644a478b1461019c576100f5565b80630f1530e4146100fa57806331f92b13146101235780633f1626c814610136575b600080fd5b61010d61010836600461146b565b610261565b60405161011a91906117e5565b60405180910390f35b61010d61013136600461130c565b61027c565b61010d61014436600461130c565b6102a3565b61015c61015736600461130c565b6102c2565b60405161011a9190611817565b61010d610177366004611351565b6102db565b61018f61018a36600461130c565b610309565b60405161011a9190611832565b6101af6101aa36600461146b565b610322565b60405161011a919061148c565b6101af6101ca366004611351565b61033d565b6101af6101dd366004611327565b610364565b6101f56101f0366004611385565b61037e565b60405161011a919061180d565b6101af61021036600461130c565b61039e565b6101f5610223366004611439565b6103c0565b61010d61023636600461140b565b6103d1565b61010d610249366004611351565b6103e2565b6101af61025c366004611351565b610410565b6102696112d0565b6102738383610437565b90505b92915050565b6102846112d0565b61029b61029636849003840184611397565b6105c6565b90505b919050565b6102ab6112d0565b61029b6102bd36849003840184611397565b6106fd565b600061029b6102d636849003840184611397565b61085d565b6102e36112d0565b6102736102f536859003850185611397565b61030436859003850185611397565b610874565b600061029b61031d368490038401846113e6565b610af0565b6000805a90506103328484610437565b505a90039392505050565b6000805a905061033261035536869003860186611397565b61030436869003860186611397565b600061027361037836859003850185611397565b83610af7565b6103866112e2565b61027361039836859003850185611397565b83610bbe565b6000805a90506103b66102bd36859003850185611397565b505a900392915050565b6103c86112e2565b61029b82610c4c565b6103d96112d0565b61029b82610c8d565b6103ea6112d0565b6102736103fc36859003850185611397565b61040b36859003850185611397565b610cca565b6000805a905061033261042836869003860186611397565b61040b36869003860186611397565b61043f6112d0565b60008211610482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906115bd565b60405180910390fd5b8261049c5750604080516020810190915260008152610276565b71ffffffffffffffffffffffffffffffffffff831161055257600082607085901b816104c457fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610276565b600061056e846e01000000000000000000000000000085610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6105ce6112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611788565b81600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660011415610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611753565b604051806020016040528083600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000816106d457fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509050919050565b6107056112d0565b815171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116116107a0576040518060200160405280610779607085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169052905061029e565b60006107cd83600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113b565b60ff03905060028160ff16816107df57fe5b0681039050604051806020016040528060028360700360ff16816107ff57fe5b0460ff166108348460ff1687600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529392505050565b5160701c6dffffffffffffffffffffffffffff1690565b61087c6112d0565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1615806108c5575081517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b156108df5750604080516020810190915260008152610276565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516111561096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116f6565b6000607060ff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16607060ff16887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601010190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611688565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529b9a5050505050505050505050565b5160701c90565b600080610b4884600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660008512610b2e5784610b33565b846000035b6e010000000000000000000000000000610f48565b90507f80000000000000000000000000000000000000000000000000000000000000008110610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116bf565b60008312610bb15780610bb6565b806000035b949350505050565b610bc66112e2565b6000821580610c0157505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610bfe57fe5b04145b610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611586565b60408051602081019091529081529392505050565b610c546112e2565b50604080516020810190915260709190911b7fffffffffffffffffffffffffffffffffffff000000000000000000000000000016815290565b610c956112d0565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610cd26112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611529565b815183517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811691161415610d77575060408051602081019091526e0100000000000000000000000000008152610276565b825171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911611610e5c57815183516000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169060701b7fffffffffffffffffffffffffffffffffffff00000000000000000000000000001681610e0357fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b6000610ebc6e01000000000000000000000000000085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529392505050565b6000806000610f578686611215565b9150915060008480610f6557fe5b868809905082811115610f79576001820391505b918290039181610f9757848381610f8c57fe5b049350505050610fe1565b848210610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061161a565b610fdb838387611260565b93505050505b9392505050565b600081610ff75750600061029e565b816001700100000000000000000000000000000000821061101d5760809190911c9060401b5b6801000000000000000082106110385760409190911c9060201b5b640100000000821061104f5760209190911c9060101b5b6201000082106110645760109190911c9060081b5b61010082106110785760089190911c9060041b5b6010821061108b5760049190911c9060021b5b600882106110975760011b5b60018185816110a257fe5b048201901c905060018185816110b457fe5b048201901c905060018185816110c657fe5b048201901c905060018185816110d857fe5b048201901c905060018185816110ea57fe5b048201901c905060018185816110fc57fe5b048201901c9050600181858161110e57fe5b048201901c9050600081858161112057fe5b0490508082106111305780611132565b815b95945050505050565b6000808211611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611495565b700100000000000000000000000000000000821061119657608091821c91015b6801000000000000000082106111ae57604091821c91015b64010000000082106111c257602091821c91015b6201000082106111d457601091821c91015b61010082106111e557600891821c91015b601082106111f557600491821c91015b6004821061120557600291821c91015b6002821061029e57600101919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611258576001820391505b509250929050565b6000818103821680838161127057fe5b04925080858161127c57fe5b04945080816000038161128b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215611306578081fd5b50919050565b60006020828403121561131d578081fd5b61027383836112f5565b60008060408385031215611339578081fd5b61134384846112f5565b946020939093013593505050565b60008060408385031215611363578182fd5b61136d84846112f5565b915061137c84602085016112f5565b90509250929050565b60008060408385031215611339578182fd5b6000602082840312156113a8578081fd5b6113b26020611851565b82357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146113dd578283fd5b81529392505050565b6000602082840312156113f7578081fd5b6114016020611851565b9135825250919050565b60006020828403121561141c578081fd5b81356dffffffffffffffffffffffffffff81168114610fe1578182fd5b60006020828403121561144a578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610fe1578182fd5b6000806040838503121561147d578182fd5b50508035926020909101359150565b90815260200190565b60208082526021908201527f4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a657260408201527f6f00000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4669786564506f696e743a3a64697675713a206f766572666c6f770000000000604082015260600190565b60208082526023908201527f4669786564506f696e743a3a64697675713a206469766973696f6e206279207a60408201527f65726f0000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604082015260600190565b60208082526026908201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260408201527f79207a65726f0000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604082015260600190565b6020808252601e908201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604082015260600190565b6020808252601f908201527f4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f7700604082015260600190565b6020808252601a908201527f4669786564506f696e743a3a6d756c693a206f766572666c6f77000000000000604082015260600190565b60208082526021908201527f4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77604082015260600190565b6020808252602a908201527f4669786564506f696e743a3a7265636970726f63616c3a207265636970726f6360408201527f616c206f66207a65726f00000000000000000000000000000000000000000000606082015260800190565b90517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561187057600080fd5b60405291905056fea26469706673582212205fe4dd4e0a768eed556a380eafe71c0862cf6cde351855821913d389f8bc0f8564736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506118ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d173f7111610097578063c814e31411610066578063c814e31414610215578063ca2d029914610228578063ca74fcc01461023b578063d993d3791461024e576100f5565b80636d173f71146101bc57806389258451146101cf578063af35b769146101e2578063b1acad5c14610202576100f5565b80634fd04a40116100d35780634fd04a40146101495780635a606689146101695780635f9f4c3b1461017c578063644a478b1461019c576100f5565b80630f1530e4146100fa57806331f92b13146101235780633f1626c814610136575b600080fd5b61010d61010836600461146b565b610261565b60405161011a91906117e5565b60405180910390f35b61010d61013136600461130c565b61027c565b61010d61014436600461130c565b6102a3565b61015c61015736600461130c565b6102c2565b60405161011a9190611817565b61010d610177366004611351565b6102db565b61018f61018a36600461130c565b610309565b60405161011a9190611832565b6101af6101aa36600461146b565b610322565b60405161011a919061148c565b6101af6101ca366004611351565b61033d565b6101af6101dd366004611327565b610364565b6101f56101f0366004611385565b61037e565b60405161011a919061180d565b6101af61021036600461130c565b61039e565b6101f5610223366004611439565b6103c0565b61010d61023636600461140b565b6103d1565b61010d610249366004611351565b6103e2565b6101af61025c366004611351565b610410565b6102696112d0565b6102738383610437565b90505b92915050565b6102846112d0565b61029b61029636849003840184611397565b6105c6565b90505b919050565b6102ab6112d0565b61029b6102bd36849003840184611397565b6106fd565b600061029b6102d636849003840184611397565b61085d565b6102e36112d0565b6102736102f536859003850185611397565b61030436859003850185611397565b610874565b600061029b61031d368490038401846113e6565b610af0565b6000805a90506103328484610437565b505a90039392505050565b6000805a905061033261035536869003860186611397565b61030436869003860186611397565b600061027361037836859003850185611397565b83610af7565b6103866112e2565b61027361039836859003850185611397565b83610bbe565b6000805a90506103b66102bd36859003850185611397565b505a900392915050565b6103c86112e2565b61029b82610c4c565b6103d96112d0565b61029b82610c8d565b6103ea6112d0565b6102736103fc36859003850185611397565b61040b36859003850185611397565b610cca565b6000805a905061033261042836869003860186611397565b61040b36869003860186611397565b61043f6112d0565b60008211610482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906115bd565b60405180910390fd5b8261049c5750604080516020810190915260008152610276565b71ffffffffffffffffffffffffffffffffffff831161055257600082607085901b816104c457fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610276565b600061056e846e01000000000000000000000000000085610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6105ce6112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611788565b81600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660011415610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611753565b604051806020016040528083600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000816106d457fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509050919050565b6107056112d0565b815171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116116107a0576040518060200160405280610779607085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169052905061029e565b60006107cd83600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113b565b60ff03905060028160ff16816107df57fe5b0681039050604051806020016040528060028360700360ff16816107ff57fe5b0460ff166108348460ff1687600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529392505050565b5160701c6dffffffffffffffffffffffffffff1690565b61087c6112d0565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1615806108c5575081517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b156108df5750604080516020810190915260008152610276565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516111561096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116f6565b6000607060ff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16607060ff16887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601010190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611688565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529b9a5050505050505050505050565b5160701c90565b600080610b4884600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660008512610b2e5784610b33565b846000035b6e010000000000000000000000000000610f48565b90507f80000000000000000000000000000000000000000000000000000000000000008110610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116bf565b60008312610bb15780610bb6565b806000035b949350505050565b610bc66112e2565b6000821580610c0157505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610bfe57fe5b04145b610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611586565b60408051602081019091529081529392505050565b610c546112e2565b50604080516020810190915260709190911b7fffffffffffffffffffffffffffffffffffff000000000000000000000000000016815290565b610c956112d0565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610cd26112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611529565b815183517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811691161415610d77575060408051602081019091526e0100000000000000000000000000008152610276565b825171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911611610e5c57815183516000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169060701b7fffffffffffffffffffffffffffffffffffff00000000000000000000000000001681610e0357fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b6000610ebc6e01000000000000000000000000000085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529392505050565b6000806000610f578686611215565b9150915060008480610f6557fe5b868809905082811115610f79576001820391505b918290039181610f9757848381610f8c57fe5b049350505050610fe1565b848210610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061161a565b610fdb838387611260565b93505050505b9392505050565b600081610ff75750600061029e565b816001700100000000000000000000000000000000821061101d5760809190911c9060401b5b6801000000000000000082106110385760409190911c9060201b5b640100000000821061104f5760209190911c9060101b5b6201000082106110645760109190911c9060081b5b61010082106110785760089190911c9060041b5b6010821061108b5760049190911c9060021b5b600882106110975760011b5b60018185816110a257fe5b048201901c905060018185816110b457fe5b048201901c905060018185816110c657fe5b048201901c905060018185816110d857fe5b048201901c905060018185816110ea57fe5b048201901c905060018185816110fc57fe5b048201901c9050600181858161110e57fe5b048201901c9050600081858161112057fe5b0490508082106111305780611132565b815b95945050505050565b6000808211611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611495565b700100000000000000000000000000000000821061119657608091821c91015b6801000000000000000082106111ae57604091821c91015b64010000000082106111c257602091821c91015b6201000082106111d457601091821c91015b61010082106111e557600891821c91015b601082106111f557600491821c91015b6004821061120557600291821c91015b6002821061029e57600101919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611258576001820391505b509250929050565b6000818103821680838161127057fe5b04925080858161127c57fe5b04945080816000038161128b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215611306578081fd5b50919050565b60006020828403121561131d578081fd5b61027383836112f5565b60008060408385031215611339578081fd5b61134384846112f5565b946020939093013593505050565b60008060408385031215611363578182fd5b61136d84846112f5565b915061137c84602085016112f5565b90509250929050565b60008060408385031215611339578182fd5b6000602082840312156113a8578081fd5b6113b26020611851565b82357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146113dd578283fd5b81529392505050565b6000602082840312156113f7578081fd5b6114016020611851565b9135825250919050565b60006020828403121561141c578081fd5b81356dffffffffffffffffffffffffffff81168114610fe1578182fd5b60006020828403121561144a578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610fe1578182fd5b6000806040838503121561147d578182fd5b50508035926020909101359150565b90815260200190565b60208082526021908201527f4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a657260408201527f6f00000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4669786564506f696e743a3a64697675713a206f766572666c6f770000000000604082015260600190565b60208082526023908201527f4669786564506f696e743a3a64697675713a206469766973696f6e206279207a60408201527f65726f0000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604082015260600190565b60208082526026908201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260408201527f79207a65726f0000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604082015260600190565b6020808252601e908201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604082015260600190565b6020808252601f908201527f4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f7700604082015260600190565b6020808252601a908201527f4669786564506f696e743a3a6d756c693a206f766572666c6f77000000000000604082015260600190565b60208082526021908201527f4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77604082015260600190565b6020808252602a908201527f4669786564506f696e743a3a7265636970726f63616c3a207265636970726f6360408201527f616c206f66207a65726f00000000000000000000000000000000000000000000606082015260800190565b90517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561187057600080fd5b60405291905056fea26469706673582212205fe4dd4e0a768eed556a380eafe71c0862cf6cde351855821913d389f8bc0f8564736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d173f7111610097578063c814e31411610066578063c814e31414610215578063ca2d029914610228578063ca74fcc01461023b578063d993d3791461024e576100f5565b80636d173f71146101bc57806389258451146101cf578063af35b769146101e2578063b1acad5c14610202576100f5565b80634fd04a40116100d35780634fd04a40146101495780635a606689146101695780635f9f4c3b1461017c578063644a478b1461019c576100f5565b80630f1530e4146100fa57806331f92b13146101235780633f1626c814610136575b600080fd5b61010d61010836600461146b565b610261565b60405161011a91906117e5565b60405180910390f35b61010d61013136600461130c565b61027c565b61010d61014436600461130c565b6102a3565b61015c61015736600461130c565b6102c2565b60405161011a9190611817565b61010d610177366004611351565b6102db565b61018f61018a36600461130c565b610309565b60405161011a9190611832565b6101af6101aa36600461146b565b610322565b60405161011a919061148c565b6101af6101ca366004611351565b61033d565b6101af6101dd366004611327565b610364565b6101f56101f0366004611385565b61037e565b60405161011a919061180d565b6101af61021036600461130c565b61039e565b6101f5610223366004611439565b6103c0565b61010d61023636600461140b565b6103d1565b61010d610249366004611351565b6103e2565b6101af61025c366004611351565b610410565b6102696112d0565b6102738383610437565b90505b92915050565b6102846112d0565b61029b61029636849003840184611397565b6105c6565b90505b919050565b6102ab6112d0565b61029b6102bd36849003840184611397565b6106fd565b600061029b6102d636849003840184611397565b61085d565b6102e36112d0565b6102736102f536859003850185611397565b61030436859003850185611397565b610874565b600061029b61031d368490038401846113e6565b610af0565b6000805a90506103328484610437565b505a90039392505050565b6000805a905061033261035536869003860186611397565b61030436869003860186611397565b600061027361037836859003850185611397565b83610af7565b6103866112e2565b61027361039836859003850185611397565b83610bbe565b6000805a90506103b66102bd36859003850185611397565b505a900392915050565b6103c86112e2565b61029b82610c4c565b6103d96112d0565b61029b82610c8d565b6103ea6112d0565b6102736103fc36859003850185611397565b61040b36859003850185611397565b610cca565b6000805a905061033261042836869003860186611397565b61040b36869003860186611397565b61043f6112d0565b60008211610482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906115bd565b60405180910390fd5b8261049c5750604080516020810190915260008152610276565b71ffffffffffffffffffffffffffffffffffff831161055257600082607085901b816104c457fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610276565b600061056e846e01000000000000000000000000000085610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611651565b6105ce6112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611788565b81600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660011415610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611753565b604051806020016040528083600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000816106d457fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509050919050565b6107056112d0565b815171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116116107a0576040518060200160405280610779607085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169052905061029e565b60006107cd83600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113b565b60ff03905060028160ff16816107df57fe5b0681039050604051806020016040528060028360700360ff16816107ff57fe5b0460ff166108348460ff1687600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b610fe8565b901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529392505050565b5160701c6dffffffffffffffffffffffffffff1690565b61087c6112d0565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1615806108c5575081517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b156108df5750604080516020810190915260008152610276565b825182516dffffffffffffffffffffffffffff607083811c8216938216929081901c82169190811690828502908285029083870290858702907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516111561096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116f6565b6000607060ff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16607060ff16887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1601010190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611688565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529b9a5050505050505050505050565b5160701c90565b600080610b4884600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660008512610b2e5784610b33565b846000035b6e010000000000000000000000000000610f48565b90507f80000000000000000000000000000000000000000000000000000000000000008110610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906116bf565b60008312610bb15780610bb6565b806000035b949350505050565b610bc66112e2565b6000821580610c0157505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610bfe57fe5b04145b610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611586565b60408051602081019091529081529392505050565b610c546112e2565b50604080516020810190915260709190911b7fffffffffffffffffffffffffffffffffffff000000000000000000000000000016815290565b610c956112d0565b50604080516020810190915260709190911b7bffffffffffffffffffffffffffff000000000000000000000000000016815290565b610cd26112d0565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611529565b815183517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811691161415610d77575060408051602081019091526e0100000000000000000000000000008152610276565b825171ffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911611610e5c57815183516000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169060701b7fffffffffffffffffffffffffffffffffffff00000000000000000000000000001681610e0357fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b6000610ebc6e01000000000000000000000000000085600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f48565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906114f2565b60408051602081019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681529392505050565b6000806000610f578686611215565b9150915060008480610f6557fe5b868809905082811115610f79576001820391505b918290039181610f9757848381610f8c57fe5b049350505050610fe1565b848210610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061161a565b610fdb838387611260565b93505050505b9392505050565b600081610ff75750600061029e565b816001700100000000000000000000000000000000821061101d5760809190911c9060401b5b6801000000000000000082106110385760409190911c9060201b5b640100000000821061104f5760209190911c9060101b5b6201000082106110645760109190911c9060081b5b61010082106110785760089190911c9060041b5b6010821061108b5760049190911c9060021b5b600882106110975760011b5b60018185816110a257fe5b048201901c905060018185816110b457fe5b048201901c905060018185816110c657fe5b048201901c905060018185816110d857fe5b048201901c905060018185816110ea57fe5b048201901c905060018185816110fc57fe5b048201901c9050600181858161110e57fe5b048201901c9050600081858161112057fe5b0490508082106111305780611132565b815b95945050505050565b6000808211611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611495565b700100000000000000000000000000000000821061119657608091821c91015b6801000000000000000082106111ae57604091821c91015b64010000000082106111c257602091821c91015b6201000082106111d457601091821c91015b61010082106111e557600891821c91015b601082106111f557600491821c91015b6004821061120557600291821c91015b6002821061029e57600101919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611258576001820391505b509250929050565b6000818103821680838161127057fe5b04925080858161127c57fe5b04945080816000038161128b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600060208284031215611306578081fd5b50919050565b60006020828403121561131d578081fd5b61027383836112f5565b60008060408385031215611339578081fd5b61134384846112f5565b946020939093013593505050565b60008060408385031215611363578182fd5b61136d84846112f5565b915061137c84602085016112f5565b90509250929050565b60008060408385031215611339578182fd5b6000602082840312156113a8578081fd5b6113b26020611851565b82357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146113dd578283fd5b81529392505050565b6000602082840312156113f7578081fd5b6114016020611851565b9135825250919050565b60006020828403121561141c578081fd5b81356dffffffffffffffffffffffffffff81168114610fe1578182fd5b60006020828403121561144a578081fd5b813571ffffffffffffffffffffffffffffffffffff81168114610fe1578182fd5b6000806040838503121561147d578182fd5b50508035926020909101359150565b90815260200190565b60208082526021908201527f4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a657260408201527f6f00000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4669786564506f696e743a3a64697675713a206f766572666c6f770000000000604082015260600190565b60208082526023908201527f4669786564506f696e743a3a64697675713a206469766973696f6e206279207a60408201527f65726f0000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604082015260600190565b60208082526026908201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260408201527f79207a65726f0000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604082015260600190565b6020808252601e908201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604082015260600190565b6020808252601f908201527f4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f7700604082015260600190565b6020808252601a908201527f4669786564506f696e743a3a6d756c693a206f766572666c6f77000000000000604082015260600190565b60208082526021908201527f4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77604082015260600190565b6020808252602a908201527f4669786564506f696e743a3a7265636970726f63616c3a207265636970726f6360408201527f616c206f66207a65726f00000000000000000000000000000000000000000000606082015260800190565b90517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260200190565b9051815260200190565b6dffffffffffffffffffffffffffff91909116815260200190565b71ffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561187057600080fd5b60405291905056fea26469706673582212205fe4dd4e0a768eed556a380eafe71c0862cf6cde351855821913d389f8bc0f8564736f6c634300060c0033",
      "srcmap": "145:2873:12:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "145:2873:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:177;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2489:159;;;;;;:::i;:::-;;:::i;2654:147::-;;;;;;:::i;:::-;;:::i;439:131::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1029:221::-;;;;;;:::i;:::-;;:::i;576:137::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2244:239::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1256:283::-;;;;;;:::i;:::-;;:::i;884:139::-;;;;;;:::i;:::-;;:::i;719:159::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2807:209::-;;;;;;:::i;:::-;;:::i;304:129::-;;;;;;:::i;:::-;;:::i;175:123::-;;;;;;:::i;:::-;;:::i;1545:221::-;;;;;;:::i;:::-;;:::i;1772:283::-;;;;;;:::i;:::-;;:::i;2061:177::-;2142:27;;:::i;:::-;2188:43;2208:9;2219:11;2188:19;:43::i;:::-;2181:50;;2061:177;;;;;:::o;2489:159::-;2568:27;;:::i;:::-;2614;;;;;;;;2636:4;2614:27;:::i;:::-;:21;:27::i;:::-;2607:34;;2489:159;;;;:::o;2654:147::-;2727:27;;:::i;:::-;2773:21;;;;;;;;2789:4;2773:21;:::i;:::-;:15;:21::i;439:131::-;514:7;540:23;;;;;;;;558:4;540:23;:::i;:::-;:17;:23::i;1029:221::-;1164:27;;:::i;:::-;1214:29;;;;;;;;1231:4;1214:29;:::i;:::-;;;;;;;;1237:5;1214:29;:::i;:::-;:16;:29::i;576:137::-;654:7;680:26;;;;;;;;701:4;680:26;:::i;:::-;:20;:26::i;2244:239::-;2337:7;2356:17;2376:9;2356:29;;2395:43;2415:9;2426:11;2395:19;:43::i;:::-;;2467:9;2455:21;;;2244:239;-1:-1:-1;;;2244:239:12:o;1256:283::-;1403:7;1426:17;1446:9;1426:29;-1:-1:-1;1465:29:12;;;;;;;;1482:4;1465:29;:::i;:::-;;;;;;;;1488:5;1465:29;:::i;884:139::-;967:6;992:24;;;;;;;;1008:4;992:24;:::i;:::-;1014:1;992:15;:24::i;719:159::-;802:27;;:::i;:::-;848:23;;;;;;;;863:4;848:23;:::i;:::-;869:1;848:14;:23::i;2807:209::-;2892:7;2911:17;2931:9;2911:29;-1:-1:-1;2950:21:12;;;;;;;;2966:4;2950:21;:::i;:::-;;3000:9;2988:21;;;2807:209;-1:-1:-1;;2807:209:12:o;304:129::-;357:27;;:::i;:::-;403:23;424:1;403:20;:23::i;175:123::-;225:27;;:::i;:::-;271:20;289:1;271:17;:20::i;1545:221::-;1680:27;;:::i;:::-;1730:29;;;;;;;;1747:4;1730:29;:::i;:::-;;;;;;;;1753:5;1730:29;:::i;:::-;:16;:29::i;1772:283::-;1919:7;1942:17;1962:9;1942:29;-1:-1:-1;1981:29:12;;;;;;;;1998:4;1981:29;:::i;:::-;;;;;;;;2004:5;1981:29;:::i;4526:706:3:-;4607:16;;:::i;:::-;4657:1;4643:11;:15;4635:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;4715:14;4711:50;;-1:-1:-1;4738:23:3;;;;;;;;;-1:-1:-1;4738:23:3;;4731:30;;4711:50;4776:24;;;4772:454;;4816:14;4861:11;531:3;4834:23;;;4861:11;4833:39;;;;;;-1:-1:-1;4894:21:3;;;;4886:64;;;;;;;;;;;;:::i;:::-;4971:26;;;;;;;;4989:6;4971:26;;;;;4964:33;;;;;4772:454;5028:14;5045:45;5061:9;571:31;5078:11;5045:15;:45::i;:::-;5028:62;-1:-1:-1;5112:21:3;;;;5104:64;;;;;;;;;;;;:::i;5320:286::-;5386:16;;:::i;:::-;5422:7;;:12;;5414:67;;;;;;;;;;;;:::i;:::-;5499:4;:7;;;:12;;5510:1;5499:12;;5491:57;;;;;;;;;;;;:::i;:::-;5565:34;;;;;;;;5590:4;:7;;;5583:14;;650:59;5583:14;;;;;;5565:34;;;;;5558:41;;5320:286;;;:::o;5683:450::-;5743:16;;:::i;:::-;5775:7;;:22;;;;;;5771:120;;5820:60;;;;;;;;5838:40;5874:3;5862:4;:7;;;5854:16;;:23;;5838:15;:40::i;:::-;5820:60;;;;5813:67;-1:-1:-1;5813:67:3;;5771:120;5901:19;5929:35;5956:4;:7;;;5929:35;;:26;:35::i;:::-;5923:3;:41;5901:63;;6007:1;5991:13;:17;;;;;;;;5974:34;;;;6025:101;;;;;;;;6122:1;6105:13;6099:3;:19;6098:25;;;;;;;;6043:81;;:50;6079:13;6059:33;;6067:4;:7;;;6059:16;;:33;;6043:15;:50::i;:::-;:81;;6025:101;;;;6018:108;5683:450;-1:-1:-1;;;5683:450:3:o;1264:125::-;1360:7;531:3;1360:21;;;;1264:125::o;2384:1263::-;2469:16;;:::i;:::-;2501:7;;:12;;;;:29;;-1:-1:-1;2517:8:3;;:13;;;2501:29;2497:79;;;-1:-1:-1;2553:12:3;;;;;;;;;-1:-1:-1;2553:12:3;;2546:19;;2497:79;2614:7;;2757:8;;2614:21;531:3;2614:21;;;;;;2684:20;;;2757:22;;;;;;;2829:21;;;;2918:33;;;;2986;;;;3065;;;;3144;;;;2614:21;3254:20;;;;3246:66;;;;;;;;;;;;:::i;:::-;3387:11;531:3;3465:19;;:5;:19;;;;3401:84;;3448:13;3401:60;;3432:13;3401:44;;531:3;3409:19;;:5;:19;;;;3401:28;;:44;:60;:84;3387:98;;3560:2;3545:18;;:3;:18;;3537:62;;;;;;;;;;;;:::i;:::-;3617:23;;;;;;;;;;;;;;;;2384:1263;-1:-1:-1;;;;;;;;;;;2384:1263:3:o;1472:128::-;1571:7;531:3;1571:21;;1472:128::o;2031:268::-;2101:6;2119:9;2131:55;2147:4;:7;;;2131:55;;2168:1;2164;:5;:14;;2177:1;2164:14;;;2173:1;2172:2;;2164:14;571:31;2131:15;:55::i;:::-;2119:67;;2208:6;2204:1;:10;2196:49;;;;;;;;;;;;:::i;:::-;2266:1;2262;:5;:30;;2290:1;2262:30;;;2278:1;2270:10;;2262:30;2255:37;2031:268;-1:-1:-1;;;;2031:268:3:o;1694:237::-;1764:16;;:::i;:::-;1792:9;1823:6;;;:42;;-1:-1:-1;;1858:7:3;;1833:32;;1838:11;;;;1853:1;1838:11;1853:1;1833:21;;;;;:32;1823:42;1815:80;;;;;;;;;;;;:::i;:::-;1912:12;;;;;;;;;;;;;1694:237;-1:-1:-1;;;1694:237:3:o;1051:130::-;1104:16;;:::i;:::-;-1:-1:-1;1139:35:3;;;;;;;;;531:3;1149:24;;;;;;1139:35;;;1051:130::o;878:127::-;928:16;;:::i;:::-;-1:-1:-1;963:35:3;;;;;;;;;531:3;973:24;;;;;;963:35;;;878:127::o;3717:693::-;3802:16;;:::i;:::-;3838:8;;:12;;3830:60;;;;;;;;;;;;:::i;:::-;3915:8;;3904:7;;:19;;;;;;;3900:81;;;-1:-1:-1;3946:24:3;;;;;;;;;571:31;3946:24;;3939:31;;3900:81;3994:7;;:22;;;;;;3990:232;;4083:8;;4057:7;;4032:13;;4048:43;;;531:3;4049:30;;;4048:43;;;;;;;-1:-1:-1;4113:20:3;;;;4105:60;;;;;;;;;;;;:::i;3990:232::-;4232:14;4249:40;571:31;4271:4;:7;;;4249:40;;4280:5;:8;;;4249:40;;:15;:40::i;:::-;4232:57;-1:-1:-1;4307:21:3;;;;4299:61;;;;;;;;;;;;:::i;:::-;4377:26;;;;;;;;;;;;;;;;3717:693;-1:-1:-1;;;3717:693:3:o;897:373:4:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;:::i;:::-;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;382:1197:1:-;430:7;453:6;449:20;;-1:-1:-1;468:1:1;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;382:1197;-1:-1:-1;;;;;382:1197:1:o;217:768:2:-;279:7;310:1;306;:5;298:51;;;;;;;;;;;;:::i;:::-;369:35;364:1;:40;360:102;;426:3;420:9;;;;443:8;360:102;480:19;475:1;:24;471:84;;521:2;515:8;;;;537:7;471:84;573:11;568:1;:16;564:76;;606:2;600:8;;;;622:7;564:76;658:7;653:1;:12;649:72;;687:2;681:8;;;;703:7;649:72;739:5;734:1;:10;730:68;;766:1;760:7;;;;781:6;730:68;816:4;811:1;:9;807:67;;842:1;836:7;;;;857:6;807:67;892:3;887:1;:8;883:66;;917:1;911:7;;;;932:6;883:66;967:3;962:1;:8;958:20;;977:1;972:6;217:768;;;:::o;216:206:4:-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:4:o;-1:-1:-1:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;176:159::-;;288:2;279:6;274:3;270:16;266:25;263:2;;;-1:-1;;294:12;263:2;-1:-1;314:15;256:79;-1:-1;256:79::o;1818:297::-;;1950:2;1938:9;1929:7;1925:23;1921:32;1918:2;;;-1:-1;;1956:12;1918:2;2018:81;2091:7;2067:22;2018:81;:::i;2122:420::-;;;2270:2;2258:9;2249:7;2245:23;2241:32;2238:2;;;-1:-1;;2276:12;2238:2;2338:81;2411:7;2387:22;2338:81;:::i;:::-;2328:91;2456:2;2494:22;;;;71:20;;-1:-1;;;2232:310::o;2549:478::-;;;2726:2;2714:9;2705:7;2701:23;2697:32;2694:2;;;-1:-1;;2732:12;2694:2;2794:81;2867:7;2843:22;2794:81;:::i;:::-;2784:91;;2930:81;3003:7;2912:2;2983:9;2979:22;2930:81;:::i;:::-;2920:91;;2688:339;;;;;:::o;3034:422::-;;;3183:2;3171:9;3162:7;3158:23;3154:32;3151:2;;;-1:-1;;3189:12;3463:293;;3593:2;3581:9;3572:7;3568:23;3564:32;3561:2;;;-1:-1;;3599:12;3561:2;527:20;3593:2;527:20;:::i;:::-;1624:6;1611:20;18472:58;19079:5;18461:70;19054:5;19051:35;19041:2;;-1:-1;;19090:12;19041:2;602:75;;609:16;3555:201;-1:-1;;;3555:201::o;4067:293::-;;4197:2;4185:9;4176:7;4172:23;4168:32;4165:2;;;-1:-1;;4203:12;4165:2;1092:20;4197:2;1092:20;:::i;:::-;1748;;1167:75;;-1:-1;1174:16;4159:201;-1:-1;4159:201::o;4367:241::-;;4471:2;4459:9;4450:7;4446:23;4442:32;4439:2;;;-1:-1;;4477:12;4439:2;1350:6;1337:20;18232:30;18831:5;18221:42;18806:5;18803:35;18793:2;;-1:-1;;18842:12;4615:241;;4719:2;4707:9;4698:7;4694:23;4690:32;4687:2;;;-1:-1;;4725:12;4687:2;1487:6;1474:20;18348:38;18955:5;18337:50;18930:5;18927:35;18917:2;;-1:-1;;18966:12;4863:366;;;4984:2;4972:9;4963:7;4959:23;4955:32;4952:2;;;-1:-1;;4990:12;4952:2;-1:-1;;1748:20;;;5142:2;5181:22;;;1748:20;;-1:-1;4946:283::o;10992:218::-;5305:36;;;11117:2;11102:18;;11088:122::o;11217:416::-;11417:2;11431:47;;;5578:2;11402:18;;;18013:19;5614:34;18053:14;;;5594:55;5683:3;5669:12;;;5662:25;5706:12;;;11388:245::o;11640:416::-;11840:2;11854:47;;;5957:2;11825:18;;;18013:19;5993:29;18053:14;;;5973:50;6042:12;;;11811:245::o;12063:416::-;12263:2;12277:47;;;6293:2;12248:18;;;18013:19;6329:34;18053:14;;;6309:55;6398:5;6384:12;;;6377:27;6423:12;;;12234:245::o;12486:416::-;12686:2;12700:47;;;6674:2;12671:18;;;18013:19;6710:27;18053:14;;;6690:48;6757:12;;;12657:245::o;12909:416::-;13109:2;13123:47;;;7008:2;13094:18;;;18013:19;7044:34;18053:14;;;7024:55;7113:8;7099:12;;;7092:30;7141:12;;;13080:245::o;13332:416::-;13532:2;13546:47;;;7392:2;13517:18;;;18013:19;7428:28;18053:14;;;7408:49;7476:12;;;13503:245::o;13755:416::-;13955:2;13969:47;;;7727:2;13940:18;;;18013:19;7763:32;18053:14;;;7743:53;7815:12;;;13926:245::o;14178:416::-;14378:2;14392:47;;;8066:2;14363:18;;;18013:19;8102:33;18053:14;;;8082:54;8155:12;;;14349:245::o;14601:416::-;14801:2;14815:47;;;8406:2;14786:18;;;18013:19;8442:28;18053:14;;;8422:49;8490:12;;;14772:245::o;15024:416::-;15224:2;15238:47;;;8741:2;15209:18;;;18013:19;8777:34;18053:14;;;8757:55;8846:3;8832:12;;;8825:25;8869:12;;;15195:245::o;15447:416::-;15647:2;15661:47;;;15632:18;;;18013:19;9156:34;18053:14;;;9136:55;9210:12;;;15618:245::o;15870:416::-;16070:2;16084:47;;;9461:2;16055:18;;;18013:19;9497:34;18053:14;;;9477:55;9566:12;9552;;;9545:34;9598:12;;;16041:245::o;16293:326::-;9898:23;;18472:58;18461:70;10713:37;;16472:2;16457:18;;16443:176::o;16626:326::-;10292:23;;5305:36;;16805:2;16790:18;;16776:176::o;16959:222::-;18232:30;18221:42;;;;10483:37;;17086:2;17071:18;;17057:124::o;17188:222::-;18348:38;18337:50;;;;10603:37;;17315:2;17300:18;;17286:124::o;17646:256::-;17708:2;17702:9;17734:17;;;17809:18;17794:34;;17830:22;;;17791:62;17788:2;;;17866:1;;17856:12;17788:2;17708;17875:22;17686:216;;-1:-1;17686:216::o"
    },
    "contracts/test/FullMathEchidnaTest.sol:FullMathEchidnaTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "y",
              "type": "uint256"
            }
          ],
          "name": "checkH",
          "outputs": [],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50610102806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632a254e8e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b81158060645750808282840281606157fe5b04145b15607e576000607283836082565b9150508015607c57fe5b505b5050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101560c4576001820391505b50925092905056fea2646970667358221220bb76c42dd444a123f268e64db96c1415d458d188e763586854d58889a44a00ba64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A254E8E EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x4F JUMP JUMPDEST STOP JUMPDEST DUP2 ISZERO DUP1 PUSH1 0x64 JUMPI POP DUP1 DUP3 DUP3 DUP5 MUL DUP2 PUSH1 0x61 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO PUSH1 0x7E JUMPI PUSH1 0x0 PUSH1 0x72 DUP4 DUP4 PUSH1 0x82 JUMP JUMPDEST SWAP2 POP POP DUP1 ISZERO PUSH1 0x7C JUMPI INVALID JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH1 0xC4 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB PUSH23 0xC42DD444A123F268E64DB96C1415D458D188E763586854 0xD5 DUP9 DUP10 LOG4 0x4A STOP 0xBA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "109:299:13:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80632a254e8e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b81158060645750808282840281606157fe5b04145b15607e576000607283836082565b9150508015607c57fe5b505b5050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101560c4576001820391505b50925092905056fea2646970667358221220bb76c42dd444a123f268e64db96c1415d458d188e763586854d58889a44a00ba64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A254E8E EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x4F JUMP JUMPDEST STOP JUMPDEST DUP2 ISZERO DUP1 PUSH1 0x64 JUMPI POP DUP1 DUP3 DUP3 DUP5 MUL DUP2 PUSH1 0x61 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO PUSH1 0x7E JUMPI PUSH1 0x0 PUSH1 0x72 DUP4 DUP4 PUSH1 0x82 JUMP JUMPDEST SWAP2 POP POP DUP1 ISZERO PUSH1 0x7C JUMPI INVALID JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH1 0xC4 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB PUSH23 0xC42DD444A123F268E64DB96C1415D458D188E763586854 0xD5 DUP9 DUP10 LOG4 0x4A STOP 0xBA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "109:299:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;144:262;;;;;;;;;;;;;;;;-1:-1:-1;144:262:13;;;;;;;:::i;:::-;;;279:6;;;:28;;;305:1;300;295;291;:5;290:11;;;;;;:16;279:28;275:125;;;326:9;339:22;356:1;359;339:16;:22::i;:::-;323:38;-1:-1:-1;;382:6:13;;375:14;;;;275:125;;144:262;;:::o;216:206:4:-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"checkH\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/FullMathEchidnaTest.sol\":\"FullMathEchidnaTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x074f43cf798f046118ed21bb9859a7fa1074b9581fe315c8702d6d292fdb2784\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://55a5cb6c5ae9ccc1e6870315bfa5f23f4c758db606f6a292fdff2224fcec082e\",\"dweb:/ipfs/QmRZayK4DWdWHaape9XcVj6VobzX7en7Tejk7gbzv7CHTy\"]},\"contracts/test/FullMathEchidnaTest.sol\":{\"keccak256\":\"0x0c89965cbd1bafc6b868a45e80a39326319384b7f699da14fd352bce706cd27d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://948ec465f719c6e753834ce3106fd8f1c97b56f7ad964796384cfad4e981191c\",\"dweb:/ipfs/Qmetgqd2mp5qSuyVaKtXdTTw7nCqtR3Cs6FJXe2ykqyFVz\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50610102806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632a254e8e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b81158060645750808282840281606157fe5b04145b15607e576000607283836082565b9150508015607c57fe5b505b5050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101560c4576001820391505b50925092905056fea2646970667358221220bb76c42dd444a123f268e64db96c1415d458d188e763586854d58889a44a00ba64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50610102806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632a254e8e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b81158060645750808282840281606157fe5b04145b15607e576000607283836082565b9150508015607c57fe5b505b5050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101560c4576001820391505b50925092905056fea2646970667358221220bb76c42dd444a123f268e64db96c1415d458d188e763586854d58889a44a00ba64736f6c634300060c0033",
      "bin-runtime": "6080604052348015600f57600080fd5b506004361060285760003560e01c80632a254e8e14602d575b600080fd5b604d60048036036040811015604157600080fd5b5080359060200135604f565b005b81158060645750808282840281606157fe5b04145b15607e576000607283836082565b9150508015607c57fe5b505b5050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101560c4576001820391505b50925092905056fea2646970667358221220bb76c42dd444a123f268e64db96c1415d458d188e763586854d58889a44a00ba64736f6c634300060c0033",
      "srcmap": "109:299:13:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "109:299:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;144:262;;;;;;;;;;;;;;;;-1:-1:-1;144:262:13;;;;;;;:::i;:::-;;;279:6;;;:28;;;305:1;300;295;291;:5;290:11;;;;;;:16;279:28;275:125;;;326:9;339:22;356:1;359;339:16;:22::i;:::-;323:38;-1:-1:-1;;382:6:13;;375:14;;;;275:125;;144:262;;:::o;216:206:4:-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o"
    },
    "contracts/test/FullMathTest.sol:FullMathTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "y",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "z",
              "type": "uint256"
            }
          ],
          "name": "mulDiv",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "y",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "z",
              "type": "uint256"
            }
          ],
          "name": "mulDivRoundingUp",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506102b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100db565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100f0565b019150505b9392505050565b60006100e88484846100f0565b949350505050565b60008060006100ff86866101c3565b915091506000848061010d57fe5b868809905082811115610121576001820391505b91829003918161013f5784838161013457fe5b0493505050506100d4565b8482106101ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101b883838761020e565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610206576001820391505b509250929050565b6000818103821680838161021e57fe5b04925080858161022a57fe5b04945080816000038161023957fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea2646970667358221220f60c7e4171fc4c4534efe0259e4ccbac200f03adfda14b32153ad2abfd785a9a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAF8B27F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAA9A0912 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP1 PUSH2 0xAC JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT SWAP1 POP DUP1 PUSH2 0xBE JUMPI PUSH1 0x0 PUSH2 0xC1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH2 0xCF DUP7 DUP7 DUP7 PUSH2 0xF0 JUMP JUMPDEST ADD SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE8 DUP5 DUP5 DUP5 PUSH2 0xF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFF DUP7 DUP7 PUSH2 0x1C3 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x10D JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0x121 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0x13F JUMPI DUP5 DUP4 DUP2 PUSH2 0x134 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xD4 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0x1AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B8 DUP4 DUP4 DUP8 PUSH2 0x20E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x21E JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x22A JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x239 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xC PUSH31 0x4171FC4C4534EFE0259E4CCBAC200F03ADFDA14B32153AD2ABFD785A9A6473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "109:428:14:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100db565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100f0565b019150505b9392505050565b60006100e88484846100f0565b949350505050565b60008060006100ff86866101c3565b915091506000848061010d57fe5b868809905082811115610121576001820391505b91829003918161013f5784838161013457fe5b0493505050506100d4565b8482106101ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101b883838761020e565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610206576001820391505b509250929050565b6000818103821680838161021e57fe5b04925080858161022a57fe5b04945080816000038161023957fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea2646970667358221220f60c7e4171fc4c4534efe0259e4ccbac200f03adfda14b32153ad2abfd785a9a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAF8B27F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAA9A0912 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xDB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP1 PUSH2 0xAC JUMPI INVALID JUMPDEST DUP6 DUP8 MULMOD GT SWAP1 POP DUP1 PUSH2 0xBE JUMPI PUSH1 0x0 PUSH2 0xC1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH2 0xCF DUP7 DUP7 DUP7 PUSH2 0xF0 JUMP JUMPDEST ADD SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE8 DUP5 DUP5 DUP5 PUSH2 0xF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFF DUP7 DUP7 PUSH2 0x1C3 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x10D JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0x121 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0x13F JUMPI DUP5 DUP4 DUP2 PUSH2 0x134 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xD4 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0x1AD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B8 DUP4 DUP4 DUP8 PUSH2 0x20E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x21E JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x22A JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x239 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xC PUSH31 0x4171FC4C4534EFE0259E4CCBAC200F03ADFDA14B32153AD2ABFD785A9A6473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "109:428:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;302:233;;;;;;;;;;;;;;;;-1:-1:-1;302:233:14;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;137:159;;;;;;;;;;;;;;;;-1:-1:-1;137:159:14;;;;;;;;;;;;:::i;302:233::-;414:7;433:12;466:1;461;448:15;;;;;458:1;455;448:15;:19;433:34;;512:7;:15;;526:1;512:15;;;522:1;512:15;484:44;;:24;500:1;503;506;484:15;:24::i;:::-;:44;477:51;;;302:233;;;;;;:::o;137:159::-;239:7;265:24;281:1;284;287;265:15;:24::i;:::-;258:31;137:159;-1:-1:-1;;;;137:159:14:o;897:373:4:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;897:373;-1:-1:-1;;;;;;;897:373:4:o;216:206::-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:4:o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDiv\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"z\",\"type\":\"uint256\"}],\"name\":\"mulDivRoundingUp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/FullMathTest.sol\":\"FullMathTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x074f43cf798f046118ed21bb9859a7fa1074b9581fe315c8702d6d292fdb2784\",\"license\":\"CC-BY-4.0\",\"urls\":[\"bzz-raw://55a5cb6c5ae9ccc1e6870315bfa5f23f4c758db606f6a292fdff2224fcec082e\",\"dweb:/ipfs/QmRZayK4DWdWHaape9XcVj6VobzX7en7Tejk7gbzv7CHTy\"]},\"contracts/test/FullMathTest.sol\":{\"keccak256\":\"0x4f12a08fa9b28684a8026ce393c8d0abbc8df713a47cdc474e4dc5f07067d4dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d9bfd678d46a85a925bfb3c5d082c4f3bdad8e6380b0c53c44f35f6d6682666\",\"dweb:/ipfs/Qme5Fkj6nUbRtmtTp6dJv2KBiWhqaV9YQ6HzX6DmCKtbb5\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506102b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100db565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100f0565b019150505b9392505050565b60006100e88484846100f0565b949350505050565b60008060006100ff86866101c3565b915091506000848061010d57fe5b868809905082811115610121576001820391505b91829003918161013f5784838161013457fe5b0493505050506100d4565b8482106101ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101b883838761020e565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610206576001820391505b509250929050565b6000818103821680838161021e57fe5b04925080858161022a57fe5b04945080816000038161023957fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea2646970667358221220f60c7e4171fc4c4534efe0259e4ccbac200f03adfda14b32153ad2abfd785a9a64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506102b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100db565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100f0565b019150505b9392505050565b60006100e88484846100f0565b949350505050565b60008060006100ff86866101c3565b915091506000848061010d57fe5b868809905082811115610121576001820391505b91829003918161013f5784838161013457fe5b0493505050506100d4565b8482106101ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101b883838761020e565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610206576001820391505b509250929050565b6000818103821680838161021e57fe5b04925080858161022a57fe5b04945080816000038161023957fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea2646970667358221220f60c7e4171fc4c4534efe0259e4ccbac200f03adfda14b32153ad2abfd785a9a64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c80630af8b27f1461003b578063aa9a091214610076575b600080fd5b6100646004803603606081101561005157600080fd5b508035906020810135906040013561009f565b60408051918252519081900360200190f35b6100646004803603606081101561008c57600080fd5b50803590602081013590604001356100db565b600080600083806100ac57fe5b858709119050806100be5760006100c1565b60015b60ff166100cf8686866100f0565b019150505b9392505050565b60006100e88484846100f0565b949350505050565b60008060006100ff86866101c3565b915091506000848061010d57fe5b868809905082811115610121576001820391505b91829003918161013f5784838161013457fe5b0493505050506100d4565b8482106101ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6101b883838761020e565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610206576001820391505b509250929050565b6000818103821680838161021e57fe5b04925080858161022a57fe5b04945080816000038161023957fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fea2646970667358221220f60c7e4171fc4c4534efe0259e4ccbac200f03adfda14b32153ad2abfd785a9a64736f6c634300060c0033",
      "srcmap": "109:428:14:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "109:428:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;302:233;;;;;;;;;;;;;;;;-1:-1:-1;302:233:14;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;137:159;;;;;;;;;;;;;;;;-1:-1:-1;137:159:14;;;;;;;;;;;;:::i;302:233::-;414:7;433:12;466:1;461;448:15;;;;;458:1;455;448:15;:19;433:34;;512:7;:15;;526:1;512:15;;;522:1;512:15;484:44;;:24;500:1;503;506;484:15;:24::i;:::-;:44;477:51;;;302:233;;;;;;:::o;137:159::-;239:7;265:24;281:1;284;287;265:15;:24::i;:::-;258:31;137:159;-1:-1:-1;;;;137:159:14:o;897:373:4:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;897:373;-1:-1:-1;;;;;;;897:373:4:o;216:206::-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:4:o"
    },
    "contracts/test/SafeERC20NamerTest.sol:NamerTestFakeCompliantERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "name_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol_",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b5060405161047a38038061047a8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060009060208501906101be565b5080516101b69060019060208401906101be565b505050610251565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101ff57805160ff191683800117855561022c565b8280016001018555821561022c579182015b8281111561022c578251825591602001919060010190610211565b5061023892915061023c565b5090565b5b80821115610238576000815560010161023d565b61021a806102606000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361016c565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f1061013957610100808354040283529160200191610164565b820191906000526020600020905b81548152906001019060200180831161014757829003601f168201915b505050505081565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f106101395761010080835404028352916020019161016456fea2646970667358221220146b1f26c390cfcbffbd1db2cb9397be570198069bef1332a07329af1b9ec71864736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x47A CODESIZE SUB DUP1 PUSH2 0x47A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A2 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1BE JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1BE JUMP JUMPDEST POP POP POP PUSH2 0x251 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1FF JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x22C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x22C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x22C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x211 JUMP JUMPDEST POP PUSH2 0x238 SWAP3 SWAP2 POP PUSH2 0x23C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x21A DUP1 PUSH2 0x260 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x43 PUSH2 0x16C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x164 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x139 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x164 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x147 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x164 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x139 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x164 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ PUSH12 0x1F26C390CFCBFFBD1DB2CB93 SWAP8 0xBE JUMPI ADD SWAP9 MOD SWAP12 0xEF SGT ORIGIN LOG0 PUSH20 0x29AF1B9EC71864736F6C634300060C0033000000 ",
          "sourceMap": "585:214:15:-:0;;;679:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:118:15;;-1:-1:-1;;752:12:15;;;;-1:-1:-1;752:4:15;;:12;;;;;:::i;:::-;-1:-1:-1;774:16:15;;;;:6;;:16;;;;;:::i;:::-;;679:118;;585:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;585:214:15;;;-1:-1:-1;585:214:15;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361016c565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f1061013957610100808354040283529160200191610164565b820191906000526020600020905b81548152906001019060200180831161014757829003601f168201915b505050505081565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f106101395761010080835404028352916020019161016456fea2646970667358221220146b1f26c390cfcbffbd1db2cb9397be570198069bef1332a07329af1b9ec71864736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x43 PUSH2 0x16C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x164 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x139 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x164 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x147 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x164 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x139 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x164 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ PUSH12 0x1F26C390CFCBFFBD1DB2CB93 SWAP8 0xBE JUMPI ADD SWAP9 MOD SWAP12 0xEF SGT ORIGIN LOG0 PUSH20 0x29AF1B9EC71864736F6C634300060C0033000000 ",
          "sourceMap": "585:214:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;628:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:20;;;:::i;628:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;652:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/SafeERC20NamerTest.sol\":\"NamerTestFakeCompliantERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]},\"contracts/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0xd4d1d01e82d3cefc7b4c915fc970f70c1eb83ca2d7ce109164ebc60e30baea5a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ddac85505104c0fb164eae955c83d45d02f2df3e78e8bd2b86b53ba0c58dfad\",\"dweb:/ipfs/QmQQCUwJtfFkNM3AjELyT97a6Hi1oaowz585T6EHpa8T1T\"]},\"contracts/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x6e45e606b8e43aa2a639e9486dfb9f2686bad7d2163dbaaf18af3390ed5eb016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1c3b4deb0bd3031324e31509a07903f845b668d8bd9ee39b7e36b662793cafa2\",\"dweb:/ipfs/QmZSxNmqimAfGHzeDUKDYZcPLUNoyjkRPMghq9KtKJAUEi\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5060405161047a38038061047a8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060009060208501906101be565b5080516101b69060019060208401906101be565b505050610251565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101ff57805160ff191683800117855561022c565b8280016001018555821561022c579182015b8281111561022c578251825591602001919060010190610211565b5061023892915061023c565b5090565b5b80821115610238576000815560010161023d565b61021a806102606000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361016c565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f1061013957610100808354040283529160200191610164565b820191906000526020600020905b81548152906001019060200180831161014757829003601f168201915b505050505081565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f106101395761010080835404028352916020019161016456fea2646970667358221220146b1f26c390cfcbffbd1db2cb9397be570198069bef1332a07329af1b9ec71864736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b5060405161047a38038061047a8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060009060208501906101be565b5080516101b69060019060208401906101be565b505050610251565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101ff57805160ff191683800117855561022c565b8280016001018555821561022c579182015b8281111561022c578251825591602001919060010190610211565b5061023892915061023c565b5090565b5b80821115610238576000815560010161023d565b61021a806102606000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361016c565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f1061013957610100808354040283529160200191610164565b820191906000526020600020905b81548152906001019060200180831161014757829003601f168201915b505050505081565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f106101395761010080835404028352916020019161016456fea2646970667358221220146b1f26c390cfcbffbd1db2cb9397be570198069bef1332a07329af1b9ec71864736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c806306fdde031461003b57806395d89b41146100b8575b600080fd5b6100436100c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007d578181015183820152602001610065565b50505050905090810190601f1680156100aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61004361016c565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f1061013957610100808354040283529160200191610164565b820191906000526020600020905b81548152906001019060200180831161014757829003601f168201915b505050505081565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156101645780601f106101395761010080835404028352916020019161016456fea2646970667358221220146b1f26c390cfcbffbd1db2cb9397be570198069bef1332a07329af1b9ec71864736f6c634300060c0033",
      "srcmap": "585:214:15:-:0;;;679:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;-1:-1:-1;679:118:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:118:15;;-1:-1:-1;;752:12:15;;;;-1:-1:-1;752:4:15;;:12;;;;;:::i;:::-;-1:-1:-1;774:16:15;;;;:6;;:16;;;;;:::i;:::-;;679:118;;585:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;585:214:15;;;-1:-1:-1;585:214:15;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "585:214:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;628:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:20;;;:::i;628:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;652:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/test/SafeERC20NamerTest.sol:NamerTestFakeNoncompliantERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "name_",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "symbol_",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506040516100ea3803806100ea8339818101604052604081101561003357600080fd5b5080516020909101516000919091556001556097806100536000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220bd5a3b1e498c60c8826d239316ae902357d0d11b32eb315c23a10dc26dbd26ec64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xEA CODESIZE SUB DUP1 PUSH2 0xEA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x1 SSTORE PUSH1 0x97 DUP1 PUSH2 0x53 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x5B JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD GAS EXTCODESIZE 0x1E 0x49 DUP13 PUSH1 0xC8 DUP3 PUSH14 0x239316AE902357D0D11B32EB315C 0x23 LOG1 0xD 0xC2 PUSH14 0xBD26EC64736F6C634300060C0033 ",
          "sourceMap": "851:207:15:-:0;;;950:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;950:106:15;;;;;;;1011:4;:12;;;;1033:6;:16;851:207;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220bd5a3b1e498c60c8826d239316ae902357d0d11b32eb315c23a10dc26dbd26ec64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x5B JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD GAS EXTCODESIZE 0x1E 0x49 DUP13 PUSH1 0xC8 DUP3 PUSH14 0x239316AE902357D0D11B32EB315C 0x23 LOG1 0xD 0xC2 PUSH14 0xBD26EC64736F6C634300060C0033 ",
          "sourceMap": "851:207:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;897:19;;;:::i;:::-;;;;;;;;;;;;;;;;922:21;;;:::i;897:19::-;;;;:::o;922:21::-;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"symbol_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/SafeERC20NamerTest.sol\":\"NamerTestFakeNoncompliantERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]},\"contracts/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0xd4d1d01e82d3cefc7b4c915fc970f70c1eb83ca2d7ce109164ebc60e30baea5a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ddac85505104c0fb164eae955c83d45d02f2df3e78e8bd2b86b53ba0c58dfad\",\"dweb:/ipfs/QmQQCUwJtfFkNM3AjELyT97a6Hi1oaowz585T6EHpa8T1T\"]},\"contracts/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x6e45e606b8e43aa2a639e9486dfb9f2686bad7d2163dbaaf18af3390ed5eb016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1c3b4deb0bd3031324e31509a07903f845b668d8bd9ee39b7e36b662793cafa2\",\"dweb:/ipfs/QmZSxNmqimAfGHzeDUKDYZcPLUNoyjkRPMghq9KtKJAUEi\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506040516100ea3803806100ea8339818101604052604081101561003357600080fd5b5080516020909101516000919091556001556097806100536000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220bd5a3b1e498c60c8826d239316ae902357d0d11b32eb315c23a10dc26dbd26ec64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506040516100ea3803806100ea8339818101604052604081101561003357600080fd5b5080516020909101516000919091556001556097806100536000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220bd5a3b1e498c60c8826d239316ae902357d0d11b32eb315c23a10dc26dbd26ec64736f6c634300060c0033",
      "bin-runtime": "6080604052348015600f57600080fd5b506004361060325760003560e01c806306fdde0314603757806395d89b4114604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6001548156fea2646970667358221220bd5a3b1e498c60c8826d239316ae902357d0d11b32eb315c23a10dc26dbd26ec64736f6c634300060c0033",
      "srcmap": "851:207:15:-:0;;;950:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;950:106:15;;;;;;;1011:4;:12;;;;1033:6;:16;851:207;;;;;;",
      "srcmap-runtime": "851:207:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;897:19;;;:::i;:::-;;;;;;;;;;;;;;;;922:21;;;:::i;897:19::-;;;;:::o;922:21::-;;;;:::o"
    },
    "contracts/test/SafeERC20NamerTest.sol:NamerTestFakeOptionalERC20": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212207889810781ba46089a1d7cbe9fe3f149df1142902f451a2bae400e0a69e056ae64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x89810781BA46089A1D7CBE9FE3F149DF1142902F451A2BAE40 0xE EXP PUSH10 0xE056AE64736F6C634300 MOD 0xC STOP CALLER ",
          "sourceMap": "500:40:15:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600080fdfea26469706673582212207889810781ba46089a1d7cbe9fe3f149df1142902f451a2bae400e0a69e056ae64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x89810781BA46089A1D7CBE9FE3F149DF1142902F451A2BAE40 0xE EXP PUSH10 0xE056AE64736F6C634300 MOD 0xC STOP CALLER ",
          "sourceMap": "500:40:15:-:0;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/SafeERC20NamerTest.sol\":\"NamerTestFakeOptionalERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]},\"contracts/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0xd4d1d01e82d3cefc7b4c915fc970f70c1eb83ca2d7ce109164ebc60e30baea5a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ddac85505104c0fb164eae955c83d45d02f2df3e78e8bd2b86b53ba0c58dfad\",\"dweb:/ipfs/QmQQCUwJtfFkNM3AjELyT97a6Hi1oaowz585T6EHpa8T1T\"]},\"contracts/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x6e45e606b8e43aa2a639e9486dfb9f2686bad7d2163dbaaf18af3390ed5eb016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1c3b4deb0bd3031324e31509a07903f845b668d8bd9ee39b7e36b662793cafa2\",\"dweb:/ipfs/QmZSxNmqimAfGHzeDUKDYZcPLUNoyjkRPMghq9KtKJAUEi\"]}},\"version\":1}",
      "bytecode": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212207889810781ba46089a1d7cbe9fe3f149df1142902f451a2bae400e0a69e056ae64736f6c634300060c0033",
      "bin": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212207889810781ba46089a1d7cbe9fe3f149df1142902f451a2bae400e0a69e056ae64736f6c634300060c0033",
      "bin-runtime": "6080604052600080fdfea26469706673582212207889810781ba46089a1d7cbe9fe3f149df1142902f451a2bae400e0a69e056ae64736f6c634300060c0033",
      "srcmap": "500:40:15:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "500:40:15:-:0;;;;;"
    },
    "contracts/test/SafeERC20NamerTest.sol:SafeERC20NamerTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "tokenName",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "tokenSymbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506107e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100e3575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610116565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a8578181015183820152602001610090565b50505050905090810190601f1680156100d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61006e600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610129565b606061012182610134565b90505b919050565b60606101218261017e565b606080610161837f95d89b41000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610443565b915050610124565b6060806101ab837f06fdde03000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610450565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617815291518151606093600093859373ffffffffffffffffffffffffffffffffffffffff891693919290918291908083835b6020831061028457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610247565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146102e4576040519150601f19603f3d011682016040523d82523d6000602084013e6102e9565b606091505b50915091508115806102fa57508051155b1561031857604051806020016040528060008152509250505061043d565b80516020141561035057600081806020019051602081101561033957600080fd5b505190506103468161045d565b935050505061043d565b6040815111156104285780806020019051602081101561036f57600080fd5b810190808051604051939291908464010000000082111561038f57600080fd5b9083019060208201858111156103a457600080fd5b82516401000000008111828201881017156103be57600080fd5b82525081516020918201929091019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b506040525050509250505061043d565b60405180602001604052806000815250925050505b92915050565b60606101218260066105cc565b60606101218260286105cc565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b602081101561051657600085826020811061049c57fe5b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561050d57808484815181106104d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909201915b50600101610485565b5060608167ffffffffffffffff8111801561053057600080fd5b506040519080825280601f01601f19166020018201604052801561055b576020820181803683370190505b50905060005b828110156105c35783818151811061057557fe5b602001015160f81c60f81b82828151811061058c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610561565b50949350505050565b6060600282061580156105df5750600082115b80156105ec575060288211155b61065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561067057600080fd5b506040519080825280601f01601f19166020018201604052801561069b576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561077c57600860138290030282901c600f600482901c1660f0821682036106e582610786565b8685600202815181106106f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061072c81610786565b86856002026001018151811061073e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506106b89050565b5090949350505050565b6000600a8260ff1610156107a157506030810160f81b610124565b506037810160f81b61012456fea264697066735822122023553d4c1e4175e54db496a2d645338a3beda90c2556e83ca82b42610011702f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7E4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x33B9B4F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE54F7522 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x90 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x129 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH2 0x134 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH2 0x17E JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x161 DUP4 PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH2 0x1C0 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x121 JUMPI PUSH2 0x176 DUP4 PUSH2 0x443 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x124 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1AB DUP4 PUSH32 0x6FDDE0300000000000000000000000000000000000000000000000000000000 PUSH2 0x1C0 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x121 JUMPI PUSH2 0x176 DUP4 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP4 PUSH1 0x0 SWAP4 DUP6 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x284 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2FA JUMPI POP DUP1 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x318 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP PUSH2 0x43D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 EQ ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x346 DUP2 PUSH2 0x45D JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD GT ISZERO PUSH2 0x428 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x418 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP SWAP3 POP POP POP PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH1 0x6 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH1 0x28 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP6 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x49C JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL SWAP1 POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x50D JUMPI DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4D7 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x485 JUMP JUMPDEST POP PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5C3 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x58C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x561 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x5DF JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x5EC JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x657 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x77C JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x6E5 DUP3 PUSH2 0x786 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6F4 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x72C DUP2 PUSH2 0x786 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x73E JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x6B8 SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x7A1 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x124 JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x124 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 SSTORE RETURNDATASIZE 0x4C 0x1E COINBASE PUSH22 0xE54DB496A2D645338A3BEDA90C2556E83CA82B426100 GT PUSH17 0x2F64736F6C634300060C00330000000000 ",
          "sourceMap": "161:300:15:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100e3575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610116565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a8578181015183820152602001610090565b50505050905090810190601f1680156100d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61006e600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610129565b606061012182610134565b90505b919050565b60606101218261017e565b606080610161837f95d89b41000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610443565b915050610124565b6060806101ab837f06fdde03000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610450565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617815291518151606093600093859373ffffffffffffffffffffffffffffffffffffffff891693919290918291908083835b6020831061028457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610247565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146102e4576040519150601f19603f3d011682016040523d82523d6000602084013e6102e9565b606091505b50915091508115806102fa57508051155b1561031857604051806020016040528060008152509250505061043d565b80516020141561035057600081806020019051602081101561033957600080fd5b505190506103468161045d565b935050505061043d565b6040815111156104285780806020019051602081101561036f57600080fd5b810190808051604051939291908464010000000082111561038f57600080fd5b9083019060208201858111156103a457600080fd5b82516401000000008111828201881017156103be57600080fd5b82525081516020918201929091019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b506040525050509250505061043d565b60405180602001604052806000815250925050505b92915050565b60606101218260066105cc565b60606101218260286105cc565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b602081101561051657600085826020811061049c57fe5b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561050d57808484815181106104d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909201915b50600101610485565b5060608167ffffffffffffffff8111801561053057600080fd5b506040519080825280601f01601f19166020018201604052801561055b576020820181803683370190505b50905060005b828110156105c35783818151811061057557fe5b602001015160f81c60f81b82828151811061058c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610561565b50949350505050565b6060600282061580156105df5750600082115b80156105ec575060288211155b61065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561067057600080fd5b506040519080825280601f01601f19166020018201604052801561069b576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561077c57600860138290030282901c600f600482901c1660f0821682036106e582610786565b8685600202815181106106f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061072c81610786565b86856002026001018151811061073e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506106b89050565b5090949350505050565b6000600a8260ff1610156107a157506030810160f81b610124565b506037810160f81b61012456fea264697066735822122023553d4c1e4175e54db496a2d645338a3beda90c2556e83ca82b42610011702f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x33B9B4F EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE54F7522 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x90 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x129 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH2 0x134 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH2 0x17E JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x161 DUP4 PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH2 0x1C0 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x121 JUMPI PUSH2 0x176 DUP4 PUSH2 0x443 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x124 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1AB DUP4 PUSH32 0x6FDDE0300000000000000000000000000000000000000000000000000000000 PUSH2 0x1C0 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x121 JUMPI PUSH2 0x176 DUP4 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP6 AND OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP4 PUSH1 0x0 SWAP4 DUP6 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x284 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2FA JUMPI POP DUP1 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x318 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP PUSH2 0x43D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 EQ ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x346 DUP2 PUSH2 0x45D JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD GT ISZERO PUSH2 0x428 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x418 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP SWAP3 POP POP POP PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH1 0x6 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x60 PUSH2 0x121 DUP3 PUSH1 0x28 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP6 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x49C JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL SWAP1 POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x50D JUMPI DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4D7 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x485 JUMP JUMPDEST POP PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5C3 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x58C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x561 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MOD ISZERO DUP1 ISZERO PUSH2 0x5DF JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST DUP1 ISZERO PUSH2 0x5EC JUMPI POP PUSH1 0x28 DUP3 GT ISZERO JUMPDEST PUSH2 0x657 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373537472696E675574696C3A20494E56414C49445F4C454E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP6 DIV DUP2 LT ISZERO PUSH2 0x77C JUMPI PUSH1 0x8 PUSH1 0x13 DUP3 SWAP1 SUB MUL DUP3 SWAP1 SHR PUSH1 0xF PUSH1 0x4 DUP3 SWAP1 SHR AND PUSH1 0xF0 DUP3 AND DUP3 SUB PUSH2 0x6E5 DUP3 PUSH2 0x786 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6F4 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x72C DUP2 PUSH2 0x786 JUMP JUMPDEST DUP7 DUP6 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x73E JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x6B8 SWAP1 POP JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH1 0xFF AND LT ISZERO PUSH2 0x7A1 JUMPI POP PUSH1 0x30 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x124 JUMP JUMPDEST POP PUSH1 0x37 DUP2 ADD PUSH1 0xF8 SHL PUSH2 0x124 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 SSTORE RETURNDATASIZE 0x4C 0x1E COINBASE PUSH22 0xE54DB496A2D645338A3BEDA90C2556E83CA82B426100 GT PUSH17 0x2F64736F6C634300060C00330000000000 ",
          "sourceMap": "161:300:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;195:131;;;;;;;;;;;;;;;;-1:-1:-1;195:131:15;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;332:127;;;;;;;;;;;;;;;;-1:-1:-1;332:127:15;;;;:::i;195:131::-;254:13;286:33;313:5;286:26;:33::i;:::-;279:40;;195:131;;;;:::o;332:127::-;389:13;421:31;446:5;421:24;:31::i;2960:382:5:-;3019:13;;3121:43;3146:5;3121:43;:24;:43::i;:::-;3098:66;;3184:6;3178:20;3202:1;3178:25;3174:139;;;3280:22;3296:5;3280:15;:22::i;:::-;3273:29;;;;;3462:363;3519:13;;3617:43;3642:5;3617:43;:24;:43::i;:::-;3596:64;;3680:4;3674:18;3696:1;3674:23;3670:128;;;3767:20;3781:5;3767:13;:20::i;2180:654::-;2346:32;;;;;;;;;;;;;;;;;;;;;;;;2329:50;;;;2268:13;;2294:12;;2268:13;;2329:16;;;;2346:32;;2329:50;;;;2346:32;2329:50;;2346:32;2329:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:86;;;;2468:7;2467:8;:28;;;-1:-1:-1;2479:11:5;;:16;2467:28;2463:68;;;2511:9;;;;;;;;;;;;;;;;;;2463:68;2589:4;:11;2604:2;2589:17;2585:224;;;2622:15;2651:4;2640:27;;;;;;;;;;;;;;;-1:-1:-1;2640:27:5;;-1:-1:-1;2688:24:5;2640:27;2688:15;:24::i;:::-;2681:31;;;;;;;2585:224;2747:2;2733:4;:11;:16;2729:80;;;2783:4;2772:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2772:26:5;;;;;;;;;;-1:-1:-1;2772:26:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:33;;;;;;2729:80;2818:9;;;;;;;;;;;;;;;;2180:654;;;;;:::o;1913:142::-;1975:13;2007:41;2039:5;2046:1;2007:31;:41::i;1618:141::-;1678:13;1710:42;1742:5;1749:2;1710:31;:42::i;332:584::-;442:13;;;452:2;442:13;;;;;;;;;390;;;;442;;;;;;;;;;;-1:-1:-1;442:13:5;415:40;;465:17;501:9;496:195;520:2;516:1;:6;496:195;;;543:11;557:1;559;557:4;;;;;;;;;;;-1:-1:-1;579:9:5;;;;575:106;;633:4;608:11;620:9;608:22;;;;;;;;;;;:29;;;;;;;;;;-1:-1:-1;655:11:5;;;;;575:106;-1:-1:-1;524:3:5;;496:195;;;;700:31;744:9;734:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;734:20:5;;700:54;;769:9;764:103;788:9;784:1;:13;764:103;;;842:11;854:1;842:14;;;;;;;;;;;;;;;;818:18;837:1;818:21;;;;;;;;;;;:38;;;;;;;;;;-1:-1:-1;799:3:5;;764:103;;;-1:-1:-1;890:18:5;332:584;-1:-1:-1;;;;332:584:5:o;212:792:0:-;285:13;324:1;318:3;:7;:12;:23;;;;;340:1;334:3;:7;318:23;:36;;;;;352:2;345:3;:9;;318:36;310:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:14;427:3;417:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;417:14:0;-1:-1:-1;400:31:0;-1:-1:-1;459:13:0;;;441:15;482:490;512:1;506:3;:7;502:1;:11;482:490;;;674:1;679:2;:6;;;674:12;662:25;;;779:6;784:1;779:6;;;;883:7;;;878:13;;916:8;779:6;916:4;:8::i;:::-;905:1;911;907;:5;905:8;;;;;;;;;;;:19;;;;;;;;;;;953:8;958:2;953:4;:8::i;:::-;938:1;944;940;:5;948:1;940:9;938:12;;;;;;;;;;;:23;;;;;;;;;;-1:-1:-1;;515:3:0;;;;;-1:-1:-1;482:490:0;;-1:-1:-1;482:490:0;;-1:-1:-1;995:1:0;;212:792;-1:-1:-1;;;;212:792:0:o;1206:185::-;1251:8;1279:2;1275:1;:6;;;1271:114;;;-1:-1:-1;1315:4:0;1311:8;;1304:16;;1297:23;;1271:114;-1:-1:-1;1369:4:0;1365:8;;1358:16;;1351:23;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenSymbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/SafeERC20NamerTest.sol\":\"SafeERC20NamerTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x1b97c78fc8ffbc4d9cf39e38a90f39b000e30802407f57c19701da67a115829c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://86cb60316d4e46f5c07b43bf9e134bb908729abd71461acf6624d0ed2e5c7eb2\",\"dweb:/ipfs/QmZwBtxd8RKiQ1pmpuUieYCRefZBcHLTG8iJWJSntiob3C\"]},\"contracts/libraries/SafeERC20Namer.sol\":{\"keccak256\":\"0xd4d1d01e82d3cefc7b4c915fc970f70c1eb83ca2d7ce109164ebc60e30baea5a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ddac85505104c0fb164eae955c83d45d02f2df3e78e8bd2b86b53ba0c58dfad\",\"dweb:/ipfs/QmQQCUwJtfFkNM3AjELyT97a6Hi1oaowz585T6EHpa8T1T\"]},\"contracts/test/SafeERC20NamerTest.sol\":{\"keccak256\":\"0x6e45e606b8e43aa2a639e9486dfb9f2686bad7d2163dbaaf18af3390ed5eb016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1c3b4deb0bd3031324e31509a07903f845b668d8bd9ee39b7e36b662793cafa2\",\"dweb:/ipfs/QmZSxNmqimAfGHzeDUKDYZcPLUNoyjkRPMghq9KtKJAUEi\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506107e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100e3575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610116565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a8578181015183820152602001610090565b50505050905090810190601f1680156100d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61006e600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610129565b606061012182610134565b90505b919050565b60606101218261017e565b606080610161837f95d89b41000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610443565b915050610124565b6060806101ab837f06fdde03000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610450565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617815291518151606093600093859373ffffffffffffffffffffffffffffffffffffffff891693919290918291908083835b6020831061028457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610247565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146102e4576040519150601f19603f3d011682016040523d82523d6000602084013e6102e9565b606091505b50915091508115806102fa57508051155b1561031857604051806020016040528060008152509250505061043d565b80516020141561035057600081806020019051602081101561033957600080fd5b505190506103468161045d565b935050505061043d565b6040815111156104285780806020019051602081101561036f57600080fd5b810190808051604051939291908464010000000082111561038f57600080fd5b9083019060208201858111156103a457600080fd5b82516401000000008111828201881017156103be57600080fd5b82525081516020918201929091019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b506040525050509250505061043d565b60405180602001604052806000815250925050505b92915050565b60606101218260066105cc565b60606101218260286105cc565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b602081101561051657600085826020811061049c57fe5b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561050d57808484815181106104d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909201915b50600101610485565b5060608167ffffffffffffffff8111801561053057600080fd5b506040519080825280601f01601f19166020018201604052801561055b576020820181803683370190505b50905060005b828110156105c35783818151811061057557fe5b602001015160f81c60f81b82828151811061058c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610561565b50949350505050565b6060600282061580156105df5750600082115b80156105ec575060288211155b61065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561067057600080fd5b506040519080825280601f01601f19166020018201604052801561069b576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561077c57600860138290030282901c600f600482901c1660f0821682036106e582610786565b8685600202815181106106f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061072c81610786565b86856002026001018151811061073e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506106b89050565b5090949350505050565b6000600a8260ff1610156107a157506030810160f81b610124565b506037810160f81b61012456fea264697066735822122023553d4c1e4175e54db496a2d645338a3beda90c2556e83ca82b42610011702f64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506107e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100e3575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610116565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a8578181015183820152602001610090565b50505050905090810190601f1680156100d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61006e600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610129565b606061012182610134565b90505b919050565b60606101218261017e565b606080610161837f95d89b41000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610443565b915050610124565b6060806101ab837f06fdde03000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610450565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617815291518151606093600093859373ffffffffffffffffffffffffffffffffffffffff891693919290918291908083835b6020831061028457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610247565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146102e4576040519150601f19603f3d011682016040523d82523d6000602084013e6102e9565b606091505b50915091508115806102fa57508051155b1561031857604051806020016040528060008152509250505061043d565b80516020141561035057600081806020019051602081101561033957600080fd5b505190506103468161045d565b935050505061043d565b6040815111156104285780806020019051602081101561036f57600080fd5b810190808051604051939291908464010000000082111561038f57600080fd5b9083019060208201858111156103a457600080fd5b82516401000000008111828201881017156103be57600080fd5b82525081516020918201929091019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b506040525050509250505061043d565b60405180602001604052806000815250925050505b92915050565b60606101218260066105cc565b60606101218260286105cc565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b602081101561051657600085826020811061049c57fe5b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561050d57808484815181106104d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909201915b50600101610485565b5060608167ffffffffffffffff8111801561053057600080fd5b506040519080825280601f01601f19166020018201604052801561055b576020820181803683370190505b50905060005b828110156105c35783818151811061057557fe5b602001015160f81c60f81b82828151811061058c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610561565b50949350505050565b6060600282061580156105df5750600082115b80156105ec575060288211155b61065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561067057600080fd5b506040519080825280601f01601f19166020018201604052801561069b576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561077c57600860138290030282901c600f600482901c1660f0821682036106e582610786565b8685600202815181106106f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061072c81610786565b86856002026001018151811061073e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506106b89050565b5090949350505050565b6000600a8260ff1610156107a157506030810160f81b610124565b506037810160f81b61012456fea264697066735822122023553d4c1e4175e54db496a2d645338a3beda90c2556e83ca82b42610011702f64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063033b9b4f1461003b578063e54f7522146100e3575b600080fd5b61006e6004803603602081101561005157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610116565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100a8578181015183820152602001610090565b50505050905090810190601f1680156100d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61006e600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610129565b606061012182610134565b90505b919050565b60606101218261017e565b606080610161837f95d89b41000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610443565b915050610124565b6060806101ab837f06fdde03000000000000000000000000000000000000000000000000000000006101c0565b90508051600014156101215761017683610450565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617815291518151606093600093859373ffffffffffffffffffffffffffffffffffffffff891693919290918291908083835b6020831061028457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610247565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146102e4576040519150601f19603f3d011682016040523d82523d6000602084013e6102e9565b606091505b50915091508115806102fa57508051155b1561031857604051806020016040528060008152509250505061043d565b80516020141561035057600081806020019051602081101561033957600080fd5b505190506103468161045d565b935050505061043d565b6040815111156104285780806020019051602081101561036f57600080fd5b810190808051604051939291908464010000000082111561038f57600080fd5b9083019060208201858111156103a457600080fd5b82516401000000008111828201881017156103be57600080fd5b82525081516020918201929091019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b506040525050509250505061043d565b60405180602001604052806000815250925050505b92915050565b60606101218260066105cc565b60606101218260286105cc565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b602081101561051657600085826020811061049c57fe5b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561050d57808484815181106104d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909201915b50600101610485565b5060608167ffffffffffffffff8111801561053057600080fd5b506040519080825280601f01601f19166020018201604052801561055b576020820181803683370190505b50905060005b828110156105c35783818151811061057557fe5b602001015160f81c60f81b82828151811061058c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610561565b50949350505050565b6060600282061580156105df5750600082115b80156105ec575060288211155b61065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60608267ffffffffffffffff8111801561067057600080fd5b506040519080825280601f01601f19166020018201604052801561069b576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff841660005b6002850481101561077c57600860138290030282901c600f600482901c1660f0821682036106e582610786565b8685600202815181106106f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061072c81610786565b86856002026001018151811061073e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050600190920191506106b89050565b5090949350505050565b6000600a8260ff1610156107a157506030810160f81b610124565b506037810160f81b61012456fea264697066735822122023553d4c1e4175e54db496a2d645338a3beda90c2556e83ca82b42610011702f64736f6c634300060c0033",
      "srcmap": "161:300:15:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "161:300:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;195:131;;;;;;;;;;;;;;;;-1:-1:-1;195:131:15;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;332:127;;;;;;;;;;;;;;;;-1:-1:-1;332:127:15;;;;:::i;195:131::-;254:13;286:33;313:5;286:26;:33::i;:::-;279:40;;195:131;;;;:::o;332:127::-;389:13;421:31;446:5;421:24;:31::i;2960:382:5:-;3019:13;;3121:43;3146:5;3121:43;:24;:43::i;:::-;3098:66;;3184:6;3178:20;3202:1;3178:25;3174:139;;;3280:22;3296:5;3280:15;:22::i;:::-;3273:29;;;;;3462:363;3519:13;;3617:43;3642:5;3617:43;:24;:43::i;:::-;3596:64;;3680:4;3674:18;3696:1;3674:23;3670:128;;;3767:20;3781:5;3767:13;:20::i;2180:654::-;2346:32;;;;;;;;;;;;;;;;;;;;;;;;2329:50;;;;2268:13;;2294:12;;2268:13;;2329:16;;;;2346:32;;2329:50;;;;2346:32;2329:50;;2346:32;2329:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:86;;;;2468:7;2467:8;:28;;;-1:-1:-1;2479:11:5;;:16;2467:28;2463:68;;;2511:9;;;;;;;;;;;;;;;;;;2463:68;2589:4;:11;2604:2;2589:17;2585:224;;;2622:15;2651:4;2640:27;;;;;;;;;;;;;;;-1:-1:-1;2640:27:5;;-1:-1:-1;2688:24:5;2640:27;2688:15;:24::i;:::-;2681:31;;;;;;;2585:224;2747:2;2733:4;:11;:16;2729:80;;;2783:4;2772:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2772:26:5;;;;;;;;;;-1:-1:-1;2772:26:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:33;;;;;;2729:80;2818:9;;;;;;;;;;;;;;;;2180:654;;;;;:::o;1913:142::-;1975:13;2007:41;2039:5;2046:1;2007:31;:41::i;1618:141::-;1678:13;1710:42;1742:5;1749:2;1710:31;:42::i;332:584::-;442:13;;;452:2;442:13;;;;;;;;;390;;;;442;;;;;;;;;;;-1:-1:-1;442:13:5;415:40;;465:17;501:9;496:195;520:2;516:1;:6;496:195;;;543:11;557:1;559;557:4;;;;;;;;;;;-1:-1:-1;579:9:5;;;;575:106;;633:4;608:11;620:9;608:22;;;;;;;;;;;:29;;;;;;;;;;-1:-1:-1;655:11:5;;;;;575:106;-1:-1:-1;524:3:5;;496:195;;;;700:31;744:9;734:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;734:20:5;;700:54;;769:9;764:103;788:9;784:1;:13;764:103;;;842:11;854:1;842:14;;;;;;;;;;;;;;;;818:18;837:1;818:21;;;;;;;;;;;:38;;;;;;;;;;-1:-1:-1;799:3:5;;764:103;;;-1:-1:-1;890:18:5;332:584;-1:-1:-1;;;;332:584:5:o;212:792:0:-;285:13;324:1;318:3;:7;:12;:23;;;;;340:1;334:3;:7;318:23;:36;;;;;352:2;345:3;:9;;318:36;310:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:14;427:3;417:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;417:14:0;-1:-1:-1;400:31:0;-1:-1:-1;459:13:0;;;441:15;482:490;512:1;506:3;:7;502:1;:11;482:490;;;674:1;679:2;:6;;;674:12;662:25;;;779:6;784:1;779:6;;;;883:7;;;878:13;;916:8;779:6;916:4;:8::i;:::-;905:1;911;907;:5;905:8;;;;;;;;;;;:19;;;;;;;;;;;953:8;958:2;953:4;:8::i;:::-;938:1;944;940;:5;948:1;940:9;938:12;;;;;;;;;;;:23;;;;;;;;;;-1:-1:-1;;515:3:0;;;;;-1:-1:-1;482:490:0;;-1:-1:-1;482:490:0;;-1:-1:-1;995:1:0;;212:792;-1:-1:-1;;;;212:792:0:o;1206:185::-;1251:8;1279:2;1275:1;:6;;;1271:114;;;-1:-1:-1;1315:4:0;1311:8;;1304:16;;1297:23;;1271:114;-1:-1:-1;1369:4:0;1365:8;;1358:16;;1351:23;"
    },
    "contracts/test/TransferHelperTest.sol:TransferHelperTest": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "safeApprove",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "safeTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "safeTransferETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50610918806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637c4368c114610051578063d1660f991461008c578063d9fc4b61146100cf578063eb5625d914610118575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561015b565b005b61008a600480360360608110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610169565b61008a600480360360808110156100e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610179565b61008a6004803603606081101561012e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561018b565b6101658282610196565b5050565b6101748383836102ce565b505050565b61018584848484610495565b50505050565b610174838383610665565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061020d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101d0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b5050905080610174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806108576034913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106103a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5091509150818015610439575080511580610439575080806020019051602081101561043657600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806108b6602d913960400191505060405180910390fd5b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061057357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610536565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105d5576040519150601f19603f3d011682016040523d82523d6000602084013e6105da565b606091505b5091509150818015610608575080511580610608575080806020019051602081101561060557600080fd5b50515b61065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806108266031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061073b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106fe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b50915091508180156107d05750805115806107d057508080602001905160208110156107cd57600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061088b602b913960400191505060405180910390fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212202bb95838976b72d7af1072fca45b555584a2a23de9605f37a0f8ea3d84c9ba5c64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x918 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C4368C1 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xD1660F99 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0xD9FC4B61 EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0xEB5625D9 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x15B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x169 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x179 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x18B JUMP JUMPDEST PUSH2 0x165 DUP3 DUP3 PUSH2 0x196 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x174 DUP4 DUP4 DUP4 PUSH2 0x2CE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x185 DUP5 DUP5 DUP5 DUP5 PUSH2 0x495 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x174 DUP4 DUP4 DUP4 PUSH2 0x665 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x20D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1D0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x274 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x174 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x857 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3A4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x406 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x40B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x439 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x439 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x48E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8B6 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x573 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x536 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5D5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x608 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x608 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x826 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x73B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7A2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7D0 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x7D0 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x48E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x88B PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x5472616E7366 PUSH6 0x724554483A20 GASLIMIT SLOAD 0x48 KECCAK256 PUSH21 0x72616E73666572206661696C65645472616E736665 PUSH19 0x48656C7065723A3A73616665417070726F7665 GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F7665206661696C65645472616E7366657248 PUSH6 0x6C7065723A3A PUSH20 0x6166655472616E736665723A207472616E736665 PUSH19 0x206661696C6564A26469706673582212202BB9 PC CODESIZE SWAP8 PUSH12 0x72D7AF1072FCA45B555584A2 LOG2 RETURNDATASIZE 0xE9 PUSH1 0x5F CALLDATACOPY LOG0 0xF8 0xEA RETURNDATASIZE DUP5 0xC9 0xBA 0x5C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "144:702:16:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80637c4368c114610051578063d1660f991461008c578063d9fc4b61146100cf578063eb5625d914610118575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561015b565b005b61008a600480360360608110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610169565b61008a600480360360808110156100e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610179565b61008a6004803603606081101561012e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561018b565b6101658282610196565b5050565b6101748383836102ce565b505050565b61018584848484610495565b50505050565b610174838383610665565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061020d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101d0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b5050905080610174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806108576034913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106103a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5091509150818015610439575080511580610439575080806020019051602081101561043657600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806108b6602d913960400191505060405180910390fd5b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061057357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610536565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105d5576040519150601f19603f3d011682016040523d82523d6000602084013e6105da565b606091505b5091509150818015610608575080511580610608575080806020019051602081101561060557600080fd5b50515b61065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806108266031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061073b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106fe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b50915091508180156107d05750805115806107d057508080602001905160208110156107cd57600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061088b602b913960400191505060405180910390fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212202bb95838976b72d7af1072fca45b555584a2a23de9605f37a0f8ea3d84c9ba5c64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C4368C1 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xD1660F99 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0xD9FC4B61 EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0xEB5625D9 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x15B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x169 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x179 JUMP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x18B JUMP JUMPDEST PUSH2 0x165 DUP3 DUP3 PUSH2 0x196 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x174 DUP4 DUP4 DUP4 PUSH2 0x2CE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x185 DUP5 DUP5 DUP5 DUP5 PUSH2 0x495 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x174 DUP4 DUP4 DUP4 PUSH2 0x665 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x20D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1D0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x274 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x174 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x857 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3A4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x406 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x40B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x439 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x439 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x48E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8B6 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x573 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x536 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5D5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x608 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x608 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x826 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x73B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7A2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7D0 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x7D0 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x48E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x88B PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT INVALID SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x5472616E7366 PUSH6 0x724554483A20 GASLIMIT SLOAD 0x48 KECCAK256 PUSH21 0x72616E73666572206661696C65645472616E736665 PUSH19 0x48656C7065723A3A73616665417070726F7665 GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F7665206661696C65645472616E7366657248 PUSH6 0x6C7065723A3A PUSH20 0x6166655472616E736665723A207472616E736665 PUSH19 0x206661696C6564A26469706673582212202BB9 PC CODESIZE SWAP8 PUSH12 0x72D7AF1072FCA45B555584A2 LOG2 RETURNDATASIZE 0xE9 PUSH1 0x5F CALLDATACOPY LOG0 0xF8 0xEA RETURNDATASIZE DUP5 0xC9 0xBA 0x5C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "144:702:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:119;;;;;;;;;;;;;;;;-1:-1:-1;725:119:16;;;;;;;;;:::i;:::-;;347:165;;;;;;;;;;;;;;;;-1:-1:-1;347:165:16;;;;;;;;;;;;;;;;;;:::i;518:201::-;;;;;;;;;;;;;;;;-1:-1:-1;518:201:16;;;;;;;;;;;;;;;;;;;;;;;:::i;178:163::-;;;;;;;;;;;;;;;;-1:-1:-1;178:163:16;;;;;;;;;;;;;;;;;;:::i;725:119::-;796:41;827:2;831:5;796:30;:41::i;:::-;725:119;;:::o;347:165::-;460:45;488:5;495:2;499:5;460:27;:45::i;:::-;347:165;;;:::o;518:201::-;657:55;689:5;696:4;702:2;706:5;657:31;:55::i;:::-;518:201;;;;:::o;178:163::-;290:44;317:5;324:2;328:5;290:26;:44::i;1588:214:6:-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1659:54;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;867:57;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;878:45;867:57;;878:45;867:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;831:93;;;;955:7;:57;;;;-1:-1:-1;967:11:6;;:16;;:44;;;998:4;987:24;;;;;;;;;;;;;;;-1:-1:-1;987:24:6;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1096:486::-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:63;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;1360:51;1349:63;;1360:51;1349:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1313:99;;;;1443:7;:57;;;;-1:-1:-1;1455:11:6;;:16;;:44;;;1486:4;1475:24;;;;;;;;;;;;;;;-1:-1:-1;1475:24:6;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;212:434::-;436:45;;;425:10;436:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:57;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;436:45;425:57;;436:45;425:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;389:93;;;;513:7;:57;;;;-1:-1:-1;525:11:6;;:16;;:44;;;556:4;545:24;;;;;;;;;;;;;;;-1:-1:-1;545:24:6;525:44;492:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeTransferETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TransferHelperTest.sol\":\"TransferHelperTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x8cb60b71be09222b2e240c2e5975788f8a51fa41e6a360c8041a02905a8af0ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://671ff2dbbb15d7a9c3a1c248ded68a7a4e3d713a2d3c357259fe1a4a1275988a\",\"dweb:/ipfs/QmUTrzyGpApw16uBZVuYjCdsZjdsy1Ath88qYzArkGKE7z\"]},\"contracts/test/TransferHelperTest.sol\":{\"keccak256\":\"0x4e394c79700c6906de5c1a079f2fcef23b47c259e8c3561baa4d228718ab24d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://884390ffa4bf5359018b1c5a5d40a9214c71db85e1a837fd69e3d159c273b608\",\"dweb:/ipfs/QmVW7rpdUpYSytQYUAsqCVC9WZraZoWGgJzqzotGeogoAt\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50610918806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637c4368c114610051578063d1660f991461008c578063d9fc4b61146100cf578063eb5625d914610118575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561015b565b005b61008a600480360360608110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610169565b61008a600480360360808110156100e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610179565b61008a6004803603606081101561012e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561018b565b6101658282610196565b5050565b6101748383836102ce565b505050565b61018584848484610495565b50505050565b610174838383610665565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061020d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101d0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b5050905080610174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806108576034913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106103a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5091509150818015610439575080511580610439575080806020019051602081101561043657600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806108b6602d913960400191505060405180910390fd5b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061057357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610536565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105d5576040519150601f19603f3d011682016040523d82523d6000602084013e6105da565b606091505b5091509150818015610608575080511580610608575080806020019051602081101561060557600080fd5b50515b61065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806108266031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061073b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106fe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b50915091508180156107d05750805115806107d057508080602001905160208110156107cd57600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061088b602b913960400191505060405180910390fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212202bb95838976b72d7af1072fca45b555584a2a23de9605f37a0f8ea3d84c9ba5c64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50610918806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637c4368c114610051578063d1660f991461008c578063d9fc4b61146100cf578063eb5625d914610118575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561015b565b005b61008a600480360360608110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610169565b61008a600480360360808110156100e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610179565b61008a6004803603606081101561012e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561018b565b6101658282610196565b5050565b6101748383836102ce565b505050565b61018584848484610495565b50505050565b610174838383610665565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061020d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101d0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b5050905080610174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806108576034913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106103a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5091509150818015610439575080511580610439575080806020019051602081101561043657600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806108b6602d913960400191505060405180910390fd5b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061057357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610536565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105d5576040519150601f19603f3d011682016040523d82523d6000602084013e6105da565b606091505b5091509150818015610608575080511580610608575080806020019051602081101561060557600080fd5b50515b61065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806108266031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061073b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106fe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b50915091508180156107d05750805115806107d057508080602001905160208110156107cd57600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061088b602b913960400191505060405180910390fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212202bb95838976b72d7af1072fca45b555584a2a23de9605f37a0f8ea3d84c9ba5c64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80637c4368c114610051578063d1660f991461008c578063d9fc4b61146100cf578063eb5625d914610118575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561015b565b005b61008a600480360360608110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610169565b61008a600480360360808110156100e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610179565b61008a6004803603606081101561012e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561018b565b6101658282610196565b5050565b6101748383836102ce565b505050565b61018584848484610495565b50505050565b610174838383610665565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061020d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101d0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461026f576040519150601f19603f3d011682016040523d82523d6000602084013e610274565b606091505b5050905080610174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806108576034913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106103a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610406576040519150601f19603f3d011682016040523d82523d6000602084013e61040b565b606091505b5091509150818015610439575080511580610439575080806020019051602081101561043657600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806108b6602d913960400191505060405180910390fd5b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061057357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610536565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105d5576040519150601f19603f3d011682016040523d82523d6000602084013e6105da565b606091505b5091509150818015610608575080511580610608575080806020019051602081101561060557600080fd5b50515b61065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806108266031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061073b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106fe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b50915091508180156107d05750805115806107d057508080602001905160208110156107cd57600080fd5b50515b61048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061088b602b913960400191505060405180910390fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212202bb95838976b72d7af1072fca45b555584a2a23de9605f37a0f8ea3d84c9ba5c64736f6c634300060c0033",
      "srcmap": "144:702:16:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "144:702:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:119;;;;;;;;;;;;;;;;-1:-1:-1;725:119:16;;;;;;;;;:::i;:::-;;347:165;;;;;;;;;;;;;;;;-1:-1:-1;347:165:16;;;;;;;;;;;;;;;;;;:::i;518:201::-;;;;;;;;;;;;;;;;-1:-1:-1;518:201:16;;;;;;;;;;;;;;;;;;;;;;;:::i;178:163::-;;;;;;;;;;;;;;;;-1:-1:-1;178:163:16;;;;;;;;;;;;;;;;;;:::i;725:119::-;796:41;827:2;831:5;796:30;:41::i;:::-;725:119;;:::o;347:165::-;460:45;488:5;495:2;499:5;460:27;:45::i;:::-;347:165;;;:::o;518:201::-;657:55;689:5;696:4;702:2;706:5;657:31;:55::i;:::-;518:201;;;;:::o;178:163::-;290:44;317:5;324:2;328:5;290:26;:44::i;1588:214:6:-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1659:54;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;867:57;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;878:45;867:57;;878:45;867:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;831:93;;;;955:7;:57;;;;-1:-1:-1;967:11:6;;:16;;:44;;;998:4;987:24;;;;;;;;;;;;;;;-1:-1:-1;987:24:6;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1096:486::-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:63;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;1360:51;1349:63;;1360:51;1349:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1313:99;;;;1443:7;:57;;;;-1:-1:-1;1455:11:6;;:16;;:44;;;1486:4;1475:24;;;;;;;;;;;;;;;-1:-1:-1;1475:24:6;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;212:434::-;436:45;;;425:10;436:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:57;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;436:45;425:57;;436:45;425:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;389:93;;;;513:7;:57;;;;-1:-1:-1;525:11:6;;:16;;:44;;;556:4;545:24;;;;;;;;;;;;;;;-1:-1:-1;545:24:6;525:44;492:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/test/TransferHelperTest.sol:TransferHelperTestFakeERC20Compliant": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "success_",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "shouldRevert_",
              "type": "bool"
            }
          ],
          "name": "setup",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "shouldRevert",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "success",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506102f6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b06101c5565b6100f3600480360360408110156100e257600080fd5b5080351515906020013515156101ce565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561022c565b6100b06102b2565b60008054610100900460ff16156101b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010091151591909102179055565b60008054610100900460ff16156102a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea26469706673582212203d84be0bfc45c9e27434517ad32468b7b827fae54f604cd21396e182b05447ec64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F6 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x23B872DD GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0x138 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xB93381B EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x15D98B40 EQ PUSH2 0xCC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x140 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1CE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x22C JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5245564552540000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5245564552540000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE DUP5 0xBE SIGNEXTEND 0xFC GASLIMIT 0xC9 0xE2 PUSH21 0x34517AD32468B7B827FAE54F604CD21396E182B054 SELFBALANCE 0xEC PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "904:716:16:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b06101c5565b6100f3600480360360408110156100e257600080fd5b5080351515906020013515156101ce565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561022c565b6100b06102b2565b60008054610100900460ff16156101b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010091151591909102179055565b60008054610100900460ff16156102a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea26469706673582212203d84be0bfc45c9e27434517ad32468b7b827fae54f604cd21396e182b05447ec64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x23B872DD GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0x138 JUMPI PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xB93381B EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x15D98B40 EQ PUSH2 0xCC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x140 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB0 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1CE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x22C JUMP JUMPDEST PUSH2 0xB0 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5245564552540000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5245564552540000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE DUP5 0xBE SIGNEXTEND 0xFC GASLIMIT 0xC9 0xE2 PUSH21 0x34517AD32468B7B827FAE54F604CD21396E182B054 SELFBALANCE 0xEC PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "904:716:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1481:137;;;;;;;;;;;;;;;;-1:-1:-1;1481:137:16;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;956:19;;;:::i;1012:132::-;;;;;;;;;;;;;;;;-1:-1:-1;1012:132:16;;;;;;;;;;;:::i;:::-;;1294:181;;;;;;;;;;;;;;;;-1:-1:-1;1294:181:16;;;;;;;;;;;;;;;;;;:::i;981:24::-;;;:::i;1481:137::-;1539:4;1564:12;;;;;;;1563:13;1555:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1604:7:16;;;;1481:137;;;;:::o;956:19::-;;;;;;:::o;1012:132::-;1081:7;:18;;;;;;;;;;;1109:28;;1081:18;1109:28;;;;;;;;;;1012:132::o;1294:181::-;1396:4;1421:12;;;;;;;1420:13;1412:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1461:7:16;;;;1294:181;;;;;:::o;981:24::-;;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"success_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldRevert_\",\"type\":\"bool\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldRevert\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"success\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TransferHelperTest.sol\":\"TransferHelperTestFakeERC20Compliant\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x8cb60b71be09222b2e240c2e5975788f8a51fa41e6a360c8041a02905a8af0ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://671ff2dbbb15d7a9c3a1c248ded68a7a4e3d713a2d3c357259fe1a4a1275988a\",\"dweb:/ipfs/QmUTrzyGpApw16uBZVuYjCdsZjdsy1Ath88qYzArkGKE7z\"]},\"contracts/test/TransferHelperTest.sol\":{\"keccak256\":\"0x4e394c79700c6906de5c1a079f2fcef23b47c259e8c3561baa4d228718ab24d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://884390ffa4bf5359018b1c5a5d40a9214c71db85e1a837fd69e3d159c273b608\",\"dweb:/ipfs/QmVW7rpdUpYSytQYUAsqCVC9WZraZoWGgJzqzotGeogoAt\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506102f6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b06101c5565b6100f3600480360360408110156100e257600080fd5b5080351515906020013515156101ce565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561022c565b6100b06102b2565b60008054610100900460ff16156101b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010091151591909102179055565b60008054610100900460ff16156102a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea26469706673582212203d84be0bfc45c9e27434517ad32468b7b827fae54f604cd21396e182b05447ec64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506102f6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b06101c5565b6100f3600480360360408110156100e257600080fd5b5080351515906020013515156101ce565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561022c565b6100b06102b2565b60008054610100900460ff16156101b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010091151591909102179055565b60008054610100900460ff16156102a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea26469706673582212203d84be0bfc45c9e27434517ad32468b7b827fae54f604cd21396e182b05447ec64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100725760003560e01c806323b872dd1161005057806323b872dd146100f5578063a9059cbb14610077578063d3072d821461013857610072565b8063095ea7b3146100775780630b93381b146100c457806315d98b40146100cc575b600080fd5b6100b06004803603604081101561008d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610140565b604080519115158252519081900360200190f35b6100b06101c5565b6100f3600480360360408110156100e257600080fd5b5080351515906020013515156101ce565b005b6100b06004803603606081101561010b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561022c565b6100b06102b2565b60008054610100900460ff16156101b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff1692915050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010091151591909102179055565b60008054610100900460ff16156102a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f5245564552540000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060005460ff169392505050565b600054610100900460ff168156fea26469706673582212203d84be0bfc45c9e27434517ad32468b7b827fae54f604cd21396e182b05447ec64736f6c634300060c0033",
      "srcmap": "904:716:16:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "904:716:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1481:137;;;;;;;;;;;;;;;;-1:-1:-1;1481:137:16;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;956:19;;;:::i;1012:132::-;;;;;;;;;;;;;;;;-1:-1:-1;1012:132:16;;;;;;;;;;;:::i;:::-;;1294:181;;;;;;;;;;;;;;;;-1:-1:-1;1294:181:16;;;;;;;;;;;;;;;;;;:::i;981:24::-;;;:::i;1481:137::-;1539:4;1564:12;;;;;;;1563:13;1555:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1604:7:16;;;;1481:137;;;;:::o;956:19::-;;;;;;:::o;1012:132::-;1081:7;:18;;;;;;;;;;;1109:28;;1081:18;1109:28;;;;;;;;;;1012:132::o;1294:181::-;1396:4;1421:12;;;;;;;1420:13;1412:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1461:7:16;;;;1294:181;;;;;:::o;981:24::-;;;;;;;;;:::o"
    },
    "contracts/test/TransferHelperTest.sol:TransferHelperTestFakeERC20Noncompliant": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "shouldRevert_",
              "type": "bool"
            }
          ],
          "name": "setup",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "shouldRevert",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506101be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea26469706673582212208fb1847dce6a4782593bf471265baa433142277905bc62d40db56254c5cf2d6f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA9059CBB GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH2 0x106 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x139 JUMP JUMPDEST PUSH2 0xF2 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x157 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 0xB1 DUP5 PUSH30 0xCE6A4782593BF471265BAA433142277905BC62D40DB56254C5CF2D6F6473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "1666:504:16:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea26469706673582212208fb1847dce6a4782593bf471265baa433142277905bc62d40db56254c5cf2d6f64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA9059CBB GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH2 0x106 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x139 JUMP JUMPDEST PUSH2 0xF2 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x157 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 0xB1 DUP5 PUSH30 0xCE6A4782593BF471265BAA433142277905BC62D40DB56254C5CF2D6F6473 PUSH16 0x6C634300060C00330000000000000000 ",
          "sourceMap": "1666:504:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:88;;;;;;;;;;;;;;;;-1:-1:-1;2080:88:16;;;;;;;;;:::i;:::-;;1942:132;;;;;;;;;;;;;;;;-1:-1:-1;1942:132:16;;;;;;;;;;;;;;;;;;:::i;1721:24::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;1752:89;;;;;;;;;;;;;;;;-1:-1:-1;1752:89:16;;;;:::i;2080:88::-;2148:12;;;;2147:13;2139:22;;;;;;2080:88;;:::o;1942:132::-;2054:12;;;;2053:13;2045:22;;;;;;1942:132;;;:::o;1721:24::-;;;;;;:::o;1752:89::-;1806:12;:28;;;;;;;;;;;;;1752:89::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"shouldRevert_\",\"type\":\"bool\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldRevert\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TransferHelperTest.sol\":\"TransferHelperTestFakeERC20Noncompliant\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x8cb60b71be09222b2e240c2e5975788f8a51fa41e6a360c8041a02905a8af0ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://671ff2dbbb15d7a9c3a1c248ded68a7a4e3d713a2d3c357259fe1a4a1275988a\",\"dweb:/ipfs/QmUTrzyGpApw16uBZVuYjCdsZjdsy1Ath88qYzArkGKE7z\"]},\"contracts/test/TransferHelperTest.sol\":{\"keccak256\":\"0x4e394c79700c6906de5c1a079f2fcef23b47c259e8c3561baa4d228718ab24d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://884390ffa4bf5359018b1c5a5d40a9214c71db85e1a837fd69e3d159c273b608\",\"dweb:/ipfs/QmVW7rpdUpYSytQYUAsqCVC9WZraZoWGgJzqzotGeogoAt\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b506101be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea26469706673582212208fb1847dce6a4782593bf471265baa433142277905bc62d40db56254c5cf2d6f64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b506101be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea26469706673582212208fb1847dce6a4782593bf471265baa433142277905bc62d40db56254c5cf2d6f64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100675760003560e01c8063a9059cbb11610050578063a9059cbb1461006c578063d3072d82146100ea578063e2c169ec1461010657610067565b8063095ea7b31461006c57806323b872dd146100a7575b600080fd5b6100a56004803603604081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610125565b005b6100a5600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610139565b6100f261014e565b604080519115158252519081900360200190f35b6100a56004803603602081101561011c57600080fd5b50351515610157565b60005460ff161561013557600080fd5b5050565b60005460ff161561014957600080fd5b505050565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea26469706673582212208fb1847dce6a4782593bf471265baa433142277905bc62d40db56254c5cf2d6f64736f6c634300060c0033",
      "srcmap": "1666:504:16:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "1666:504:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:88;;;;;;;;;;;;;;;;-1:-1:-1;2080:88:16;;;;;;;;;:::i;:::-;;1942:132;;;;;;;;;;;;;;;;-1:-1:-1;1942:132:16;;;;;;;;;;;;;;;;;;:::i;1721:24::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;1752:89;;;;;;;;;;;;;;;;-1:-1:-1;1752:89:16;;;;:::i;2080:88::-;2148:12;;;;2147:13;2139:22;;;;;;2080:88;;:::o;1942:132::-;2054:12;;;;2053:13;2045:22;;;;;;1942:132;;;:::o;1721:24::-;;;;;;:::o;1752:89::-;1806:12;:28;;;;;;;;;;;;;1752:89::o"
    },
    "contracts/test/TransferHelperTest.sol:TransferHelperTestFakeFallback": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "shouldRevert_",
              "type": "bool"
            }
          ],
          "name": "setup",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "shouldRevert",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b5061015d806100206000396000f3fe6080604052600436106100385760003560e01c80633ccfd60b14610054578063d3072d8214610069578063e2c169ec146100925761004f565b3661004f5760005460ff161561004d57600080fd5b005b600080fd5b34801561006057600080fd5b5061004d6100be565b34801561007557600080fd5b5061007e6100ed565b604080519115158252519081900360200190f35b34801561009e57600080fd5b5061004d600480360360208110156100b557600080fd5b503515156100f6565b60405133904780156108fc02916000818181858888f193505050501580156100ea573d6000803e3d6000fd5b50565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220dcf69ccc6744bbb3e174ca97adc89b5c2381250d7c4943781057c092dc2f6e2b64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0x69 JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH2 0x92 JUMPI PUSH2 0x4F JUMP JUMPDEST CALLDATASIZE PUSH2 0x4F JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D PUSH2 0xBE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7E PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xF6 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xF6 SWAP13 0xCC PUSH8 0x44BBB3E174CA97AD 0xC8 SWAP12 0x5C 0x23 DUP2 0x25 0xD PUSH29 0x4943781057C092DC2F6E2B64736F6C634300060C003300000000000000 ",
          "sourceMap": "2172:334:16:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100385760003560e01c80633ccfd60b14610054578063d3072d8214610069578063e2c169ec146100925761004f565b3661004f5760005460ff161561004d57600080fd5b005b600080fd5b34801561006057600080fd5b5061004d6100be565b34801561007557600080fd5b5061007e6100ed565b604080519115158252519081900360200190f35b34801561009e57600080fd5b5061004d600480360360208110156100b557600080fd5b503515156100f6565b60405133904780156108fc02916000818181858888f193505050501580156100ea573d6000803e3d6000fd5b50565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220dcf69ccc6744bbb3e174ca97adc89b5c2381250d7c4943781057c092dc2f6e2b64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0xD3072D82 EQ PUSH2 0x69 JUMPI DUP1 PUSH4 0xE2C169EC EQ PUSH2 0x92 JUMPI PUSH2 0x4F JUMP JUMPDEST CALLDATASIZE PUSH2 0x4F JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D PUSH2 0xBE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7E PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xF6 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xF6 SWAP13 0xCC PUSH8 0x44BBB3E174CA97AD 0xC8 SWAP12 0x5C 0x23 DUP2 0x25 0xD PUSH29 0x4943781057C092DC2F6E2B64736F6C634300060C003300000000000000 ",
          "sourceMap": "2172:334:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:12;;;;2389:13;2381:22;;;;;;2172:334;;;;;2416:88;;;;;;;;;;;;;:::i;2218:24::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2249:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2249:89:16;;;;:::i;2416:88::-;2455:42;;:10;;2475:21;2455:42;;;;;;;;;2475:21;2455:10;:42;;;;;;;;;;;;;;;;;;;;;2416:88::o;2218:24::-;;;;;;:::o;2249:89::-;2303:12;:28;;;;;;;;;;;;;2249:89::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"shouldRevert_\",\"type\":\"bool\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldRevert\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TransferHelperTest.sol\":\"TransferHelperTestFakeFallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x8cb60b71be09222b2e240c2e5975788f8a51fa41e6a360c8041a02905a8af0ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://671ff2dbbb15d7a9c3a1c248ded68a7a4e3d713a2d3c357259fe1a4a1275988a\",\"dweb:/ipfs/QmUTrzyGpApw16uBZVuYjCdsZjdsy1Ath88qYzArkGKE7z\"]},\"contracts/test/TransferHelperTest.sol\":{\"keccak256\":\"0x4e394c79700c6906de5c1a079f2fcef23b47c259e8c3561baa4d228718ab24d8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://884390ffa4bf5359018b1c5a5d40a9214c71db85e1a837fd69e3d159c273b608\",\"dweb:/ipfs/QmVW7rpdUpYSytQYUAsqCVC9WZraZoWGgJzqzotGeogoAt\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5061015d806100206000396000f3fe6080604052600436106100385760003560e01c80633ccfd60b14610054578063d3072d8214610069578063e2c169ec146100925761004f565b3661004f5760005460ff161561004d57600080fd5b005b600080fd5b34801561006057600080fd5b5061004d6100be565b34801561007557600080fd5b5061007e6100ed565b604080519115158252519081900360200190f35b34801561009e57600080fd5b5061004d600480360360208110156100b557600080fd5b503515156100f6565b60405133904780156108fc02916000818181858888f193505050501580156100ea573d6000803e3d6000fd5b50565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220dcf69ccc6744bbb3e174ca97adc89b5c2381250d7c4943781057c092dc2f6e2b64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b5061015d806100206000396000f3fe6080604052600436106100385760003560e01c80633ccfd60b14610054578063d3072d8214610069578063e2c169ec146100925761004f565b3661004f5760005460ff161561004d57600080fd5b005b600080fd5b34801561006057600080fd5b5061004d6100be565b34801561007557600080fd5b5061007e6100ed565b604080519115158252519081900360200190f35b34801561009e57600080fd5b5061004d600480360360208110156100b557600080fd5b503515156100f6565b60405133904780156108fc02916000818181858888f193505050501580156100ea573d6000803e3d6000fd5b50565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220dcf69ccc6744bbb3e174ca97adc89b5c2381250d7c4943781057c092dc2f6e2b64736f6c634300060c0033",
      "bin-runtime": "6080604052600436106100385760003560e01c80633ccfd60b14610054578063d3072d8214610069578063e2c169ec146100925761004f565b3661004f5760005460ff161561004d57600080fd5b005b600080fd5b34801561006057600080fd5b5061004d6100be565b34801561007557600080fd5b5061007e6100ed565b604080519115158252519081900360200190f35b34801561009e57600080fd5b5061004d600480360360208110156100b557600080fd5b503515156100f6565b60405133904780156108fc02916000818181858888f193505050501580156100ea573d6000803e3d6000fd5b50565b60005460ff1681565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220dcf69ccc6744bbb3e174ca97adc89b5c2381250d7c4943781057c092dc2f6e2b64736f6c634300060c0033",
      "srcmap": "2172:334:16:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "2172:334:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:12;;;;2389:13;2381:22;;;;;;2172:334;;;;;2416:88;;;;;;;;;;;;;:::i;2218:24::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2249:89;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2249:89:16;;;;:::i;2416:88::-;2455:42;;:10;;2475:21;2455:42;;;;;;;;;2475:21;2455:10;:42;;;;;;;;;;;;;;;;;;;;;2416:88::o;2218:24::-;;;;;;:::o;2249:89::-;2303:12;:28;;;;;;;;;;;;;2249:89::o"
    }
  },
  "sources": {
    "contracts/libraries/AddressStringUtil.sol": {
      "id": 0,
      "AST": {
        "absolutePath": "contracts/libraries/AddressStringUtil.sol",
        "exportedSymbols": {
          "AddressStringUtil": [
            142
          ]
        },
        "id": 143,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:0"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 142,
            "linearizedBaseContracts": [
              142
            ],
            "name": "AddressStringUtil",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 112,
                  "nodeType": "Block",
                  "src": "300:704:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 23,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11,
                                    "name": "len",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5,
                                    "src": "318:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 12,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "324:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "318:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "329:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "318:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5,
                                  "src": "334:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "340:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "334:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "318:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20,
                                "name": "len",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5,
                                "src": "345:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3430",
                                "id": 21,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "352:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_40_by_1",
                                  "typeString": "int_const 40"
                                },
                                "value": "40"
                              },
                              "src": "345:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "318:36:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "41646472657373537472696e675574696c3a20494e56414c49445f4c454e",
                            "id": 24,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "356:32:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eab9febfbdce9e67c4279e4c2a77a43766d401ab3f3bd92cdff53b9ffd3f8f3f",
                              "typeString": "literal_string \"AddressStringUtil: INVALID_LEN\""
                            },
                            "value": "AddressStringUtil: INVALID_LEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_eab9febfbdce9e67c4279e4c2a77a43766d401ab3f3bd92cdff53b9ffd3f8f3f",
                              "typeString": "literal_string \"AddressStringUtil: INVALID_LEN\""
                            }
                          ],
                          "id": 10,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "310:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 25,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "310:79:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 26,
                      "nodeType": "ExpressionStatement",
                      "src": "310:79:0"
                    },
                    {
                      "assignments": [
                        28
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 28,
                          "mutability": "mutable",
                          "name": "s",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 112,
                          "src": "400:14:0",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 27,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "400:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 33,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 31,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5,
                            "src": "427:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 30,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "417:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 29,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "421:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 32,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "417:14:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "400:31:0"
                    },
                    {
                      "assignments": [
                        35
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 35,
                          "mutability": "mutable",
                          "name": "addrNum",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 112,
                          "src": "441:15:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 34,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "441:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 40,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 38,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3,
                            "src": "467:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 37,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "459:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 36,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "459:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 39,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "459:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "441:31:0"
                    },
                    {
                      "body": {
                        "id": 105,
                        "nodeType": "Block",
                        "src": "520:452:0",
                        "statements": [
                          {
                            "assignments": [
                              54
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 54,
                                "mutability": "mutable",
                                "name": "b",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 105,
                                "src": "646:7:0",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 53,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "646:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 67,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 65,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 57,
                                    "name": "addrNum",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35,
                                    "src": "662:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 63,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "38",
                                          "id": 58,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "674:1:0",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8_by_1",
                                            "typeString": "int_const 8"
                                          },
                                          "value": "8"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 61,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3139",
                                                "id": 59,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "679:2:0",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_19_by_1",
                                                  "typeString": "int_const 19"
                                                },
                                                "value": "19"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 60,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42,
                                                "src": "684:1:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "679:6:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 62,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "678:8:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "674:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 64,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "673:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "662:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 56,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "656:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 55,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "656:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 66,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "656:32:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "646:42:0"
                          },
                          {
                            "assignments": [
                              69
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 69,
                                "mutability": "mutable",
                                "name": "hi",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 105,
                                "src": "768:8:0",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 68,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "768:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 73,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 72,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 70,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 54,
                                "src": "779:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 71,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "784:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "779:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "768:17:0"
                          },
                          {
                            "assignments": [
                              75
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 75,
                                "mutability": "mutable",
                                "name": "lo",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 105,
                                "src": "867:8:0",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 74,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "867:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 82,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 81,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 76,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 54,
                                "src": "878:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 79,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 77,
                                      "name": "hi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 69,
                                      "src": "883:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 78,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "889:1:0",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "883:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "id": 80,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "882:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "878:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "867:24:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 91,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 83,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28,
                                  "src": "905:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 87,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 86,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 84,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "907:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 85,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42,
                                    "src": "911:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "907:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "905:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 89,
                                    "name": "hi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 69,
                                    "src": "921:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 88,
                                  "name": "char",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 141,
                                  "src": "916:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_bytes1_$",
                                    "typeString": "function (uint8) pure returns (bytes1)"
                                  }
                                },
                                "id": 90,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "916:8:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "905:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 92,
                            "nodeType": "ExpressionStatement",
                            "src": "905:19:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 93,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28,
                                  "src": "938:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 99,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 98,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 96,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 94,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "940:1:0",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 95,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42,
                                      "src": "944:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "940:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 97,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "948:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "940:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "938:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 101,
                                    "name": "lo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 75,
                                    "src": "958:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 100,
                                  "name": "char",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 141,
                                  "src": "953:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_bytes1_$",
                                    "typeString": "function (uint8) pure returns (bytes1)"
                                  }
                                },
                                "id": 102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "953:8:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "938:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 104,
                            "nodeType": "ExpressionStatement",
                            "src": "938:23:0"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 49,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 45,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42,
                          "src": "502:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 48,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 46,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5,
                            "src": "506:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 47,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "512:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "506:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "502:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 106,
                      "initializationExpression": {
                        "assignments": [
                          42
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 106,
                            "src": "487:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 41,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "487:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 43,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "499:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "487:13:0"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 51,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "515:3:0",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 50,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42,
                            "src": "515:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 52,
                        "nodeType": "ExpressionStatement",
                        "src": "515:3:0"
                      },
                      "nodeType": "ForStatement",
                      "src": "482:490:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 109,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "995:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "988:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 107,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "988:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "988:9:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 9,
                      "id": 111,
                      "nodeType": "Return",
                      "src": "981:16:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 113,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "toAsciiString",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3,
                      "mutability": "mutable",
                      "name": "addr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 113,
                      "src": "235:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "235:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5,
                      "mutability": "mutable",
                      "name": "len",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 113,
                      "src": "249:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "249:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "234:27:0"
                },
                "returnParameters": {
                  "id": 9,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 113,
                      "src": "285:13:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "285:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "284:15:0"
                },
                "scope": 142,
                "src": "212:792:0",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 140,
                  "nodeType": "Block",
                  "src": "1261:130:0",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 120,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 115,
                          "src": "1275:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1279:2:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "src": "1275:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 138,
                        "nodeType": "Block",
                        "src": "1337:48:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 133,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 115,
                                    "src": "1365:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783337",
                                    "id": 134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1369:4:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_55_by_1",
                                      "typeString": "int_const 55"
                                    },
                                    "value": "0x37"
                                  },
                                  "src": "1365:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1358:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes1_$",
                                  "typeString": "type(bytes1)"
                                },
                                "typeName": {
                                  "id": 131,
                                  "name": "bytes1",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1358:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1358:16:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "functionReturnParameters": 119,
                            "id": 137,
                            "nodeType": "Return",
                            "src": "1351:23:0"
                          }
                        ]
                      },
                      "id": 139,
                      "nodeType": "IfStatement",
                      "src": "1271:114:0",
                      "trueBody": {
                        "id": 130,
                        "nodeType": "Block",
                        "src": "1283:48:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 127,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 125,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 115,
                                    "src": "1311:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783330",
                                    "id": 126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1315:4:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    "value": "0x30"
                                  },
                                  "src": "1311:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1304:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes1_$",
                                  "typeString": "type(bytes1)"
                                },
                                "typeName": {
                                  "id": 123,
                                  "name": "bytes1",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1304:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1304:16:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "functionReturnParameters": 119,
                            "id": 129,
                            "nodeType": "Return",
                            "src": "1297:23:0"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 141,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "char",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 116,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 115,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 141,
                      "src": "1220:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 114,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1220:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1219:9:0"
                },
                "returnParameters": {
                  "id": 119,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 118,
                      "mutability": "mutable",
                      "name": "c",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 141,
                      "src": "1251:8:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes1",
                        "typeString": "bytes1"
                      },
                      "typeName": {
                        "id": 117,
                        "name": "bytes1",
                        "nodeType": "ElementaryTypeName",
                        "src": "1251:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1250:10:0"
                },
                "scope": 142,
                "src": "1206:185:0",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              }
            ],
            "scope": 143,
            "src": "72:1321:0"
          }
        ],
        "src": "46:1348:0"
      }
    },
    "contracts/libraries/Babylonian.sol": {
      "id": 1,
      "AST": {
        "absolutePath": "contracts/libraries/Babylonian.sol",
        "exportedSymbols": {
          "Babylonian": [
            345
          ]
        },
        "id": 346,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 144,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:1"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 345,
            "linearizedBaseContracts": [
              345
            ],
            "name": "Babylonian",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 343,
                  "nodeType": "Block",
                  "src": "439:1140:1",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 151,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 146,
                          "src": "453:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "458:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "453:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 156,
                      "nodeType": "IfStatement",
                      "src": "449:20:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "468:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 150,
                        "id": 155,
                        "nodeType": "Return",
                        "src": "461:8:1"
                      }
                    },
                    {
                      "assignments": [
                        158
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 158,
                          "mutability": "mutable",
                          "name": "xx",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 343,
                          "src": "631:10:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 157,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "631:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 160,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 159,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 146,
                        "src": "644:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "631:14:1"
                    },
                    {
                      "assignments": [
                        162
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 162,
                          "mutability": "mutable",
                          "name": "r",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 343,
                          "src": "655:9:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 161,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "655:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 164,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "667:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "655:13:1"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 165,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "682:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "688:35:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "682:41:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 177,
                      "nodeType": "IfStatement",
                      "src": "678:104:1",
                      "trueBody": {
                        "id": 176,
                        "nodeType": "Block",
                        "src": "725:57:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 168,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 158,
                                "src": "739:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "746:3:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "739:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 171,
                            "nodeType": "ExpressionStatement",
                            "src": "739:10:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 172,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "763:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "769:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "763:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 175,
                            "nodeType": "ExpressionStatement",
                            "src": "763:8:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 178,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "795:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030303030303030303030303030",
                          "id": 179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "801:19:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18446744073709551616_by_1",
                            "typeString": "int_const 18446744073709551616"
                          },
                          "value": "0x10000000000000000"
                        },
                        "src": "795:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 190,
                      "nodeType": "IfStatement",
                      "src": "791:87:1",
                      "trueBody": {
                        "id": 189,
                        "nodeType": "Block",
                        "src": "822:56:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 181,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 158,
                                "src": "836:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "843:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "836:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 184,
                            "nodeType": "ExpressionStatement",
                            "src": "836:9:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 185,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "859:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "865:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "859:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 188,
                            "nodeType": "ExpressionStatement",
                            "src": "859:8:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 191,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "891:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030",
                          "id": 192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "897:11:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4294967296_by_1",
                            "typeString": "int_const 4294967296"
                          },
                          "value": "0x100000000"
                        },
                        "src": "891:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 203,
                      "nodeType": "IfStatement",
                      "src": "887:79:1",
                      "trueBody": {
                        "id": 202,
                        "nodeType": "Block",
                        "src": "910:56:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 194,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 158,
                                "src": "924:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "931:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "924:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 197,
                            "nodeType": "ExpressionStatement",
                            "src": "924:9:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 198,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "947:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "953:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "947:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 201,
                            "nodeType": "ExpressionStatement",
                            "src": "947:8:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 206,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 204,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "979:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030",
                          "id": 205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "985:7:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_65536_by_1",
                            "typeString": "int_const 65536"
                          },
                          "value": "0x10000"
                        },
                        "src": "979:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 216,
                      "nodeType": "IfStatement",
                      "src": "975:74:1",
                      "trueBody": {
                        "id": 215,
                        "nodeType": "Block",
                        "src": "994:55:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 207,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 158,
                                "src": "1008:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1015:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "1008:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 210,
                            "nodeType": "ExpressionStatement",
                            "src": "1008:9:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 211,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "1031:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1037:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1031:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 214,
                            "nodeType": "ExpressionStatement",
                            "src": "1031:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 217,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "1062:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030",
                          "id": 218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1068:5:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "0x100"
                        },
                        "src": "1062:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 229,
                      "nodeType": "IfStatement",
                      "src": "1058:71:1",
                      "trueBody": {
                        "id": 228,
                        "nodeType": "Block",
                        "src": "1075:54:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 220,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 158,
                                "src": "1089:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1096:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1089:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 223,
                            "nodeType": "ExpressionStatement",
                            "src": "1089:8:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 224,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "1111:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1117:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1111:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 227,
                            "nodeType": "ExpressionStatement",
                            "src": "1111:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 230,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "1142:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130",
                          "id": 231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1148:4:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "0x10"
                        },
                        "src": "1142:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 242,
                      "nodeType": "IfStatement",
                      "src": "1138:70:1",
                      "trueBody": {
                        "id": 241,
                        "nodeType": "Block",
                        "src": "1154:54:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 233,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 158,
                                "src": "1168:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1175:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1168:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 236,
                            "nodeType": "ExpressionStatement",
                            "src": "1168:8:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 237,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "1190:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1196:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1190:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 240,
                            "nodeType": "ExpressionStatement",
                            "src": "1190:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 243,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 158,
                          "src": "1221:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307838",
                          "id": 244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1227:3:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "0x8"
                        },
                        "src": "1221:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 251,
                      "nodeType": "IfStatement",
                      "src": "1217:47:1",
                      "trueBody": {
                        "id": 250,
                        "nodeType": "Block",
                        "src": "1232:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 246,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "1246:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1252:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1246:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 249,
                            "nodeType": "ExpressionStatement",
                            "src": "1246:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 252,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1273:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 253,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1278:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 254,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1282:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 255,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1286:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1282:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1278:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 258,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1277:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1292:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1277:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1273:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 262,
                      "nodeType": "ExpressionStatement",
                      "src": "1273:20:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 263,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1303:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 264,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1308:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 267,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 265,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1312:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 266,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1316:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1312:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1308:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 269,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1307:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1322:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1307:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1303:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 273,
                      "nodeType": "ExpressionStatement",
                      "src": "1303:20:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 274,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1333:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 275,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1338:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 278,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 276,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1342:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 277,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1346:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1342:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1338:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 280,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1337:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1352:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1337:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1333:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 284,
                      "nodeType": "ExpressionStatement",
                      "src": "1333:20:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 285,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1363:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 286,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1368:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 287,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1372:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 288,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1376:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1372:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1368:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 291,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1367:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1382:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1367:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1363:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 295,
                      "nodeType": "ExpressionStatement",
                      "src": "1363:20:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 296,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1393:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 297,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1398:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 298,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1402:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 299,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1406:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1402:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1398:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 302,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1397:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1412:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1397:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1393:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 306,
                      "nodeType": "ExpressionStatement",
                      "src": "1393:20:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 307,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1423:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 308,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1428:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 309,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1432:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 310,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1436:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1432:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1428:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 313,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1427:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1442:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1427:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1423:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 317,
                      "nodeType": "ExpressionStatement",
                      "src": "1423:20:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 327,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 318,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1453:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 319,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 162,
                                  "src": "1458:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 320,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 146,
                                    "src": "1462:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 321,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "1466:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1462:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1458:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 324,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1457:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1472:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1457:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1453:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 328,
                      "nodeType": "ExpressionStatement",
                      "src": "1453:20:1"
                    },
                    {
                      "assignments": [
                        330
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 330,
                          "mutability": "mutable",
                          "name": "r1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 343,
                          "src": "1520:10:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 329,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1520:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 334,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 331,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 146,
                          "src": "1533:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 332,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 162,
                          "src": "1537:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1533:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1520:18:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 335,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 162,
                                "src": "1556:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 336,
                                "name": "r1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 330,
                                "src": "1560:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1556:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 339,
                              "name": "r1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 330,
                              "src": "1569:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "1556:15:1",
                            "trueExpression": {
                              "argumentTypes": null,
                              "id": 338,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 162,
                              "src": "1565:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 341,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1555:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 150,
                      "id": 342,
                      "nodeType": "Return",
                      "src": "1548:24:1"
                    }
                  ]
                },
                "documentation": null,
                "id": 344,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 147,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 146,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 344,
                      "src": "396:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 145,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "396:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "395:11:1"
                },
                "returnParameters": {
                  "id": 150,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 149,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 344,
                      "src": "430:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 148,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "430:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "429:9:1"
                },
                "scope": 345,
                "src": "382:1197:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 346,
            "src": "210:1371:1"
          }
        ],
        "src": "46:1536:1"
      }
    },
    "contracts/libraries/BitMath.sol": {
      "id": 2,
      "AST": {
        "absolutePath": "contracts/libraries/BitMath.sol",
        "exportedSymbols": {
          "BitMath": [
            623
          ]
        },
        "id": 624,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 347,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "45:24:2"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 623,
            "linearizedBaseContracts": [
              623
            ],
            "name": "BitMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 460,
                  "nodeType": "Block",
                  "src": "288:697:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 355,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 349,
                              "src": "306:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "310:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "306:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f",
                            "id": 358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "313:35:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                              "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                            },
                            "value": "BitMath::mostSignificantBit: zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                              "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                            }
                          ],
                          "id": 354,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "298:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "298:51:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 360,
                      "nodeType": "ExpressionStatement",
                      "src": "298:51:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 361,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "364:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "369:35:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "364:40:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 373,
                      "nodeType": "IfStatement",
                      "src": "360:102:2",
                      "trueBody": {
                        "id": 372,
                        "nodeType": "Block",
                        "src": "406:56:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 364,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "420:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "426:3:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "420:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 367,
                            "nodeType": "ExpressionStatement",
                            "src": "420:9:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 368,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "443:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "448:3:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "443:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 371,
                            "nodeType": "ExpressionStatement",
                            "src": "443:8:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 374,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "475:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030303030303030303030303030",
                          "id": 375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "480:19:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18446744073709551616_by_1",
                            "typeString": "int_const 18446744073709551616"
                          },
                          "value": "0x10000000000000000"
                        },
                        "src": "475:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 386,
                      "nodeType": "IfStatement",
                      "src": "471:84:2",
                      "trueBody": {
                        "id": 385,
                        "nodeType": "Block",
                        "src": "501:54:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 377,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "515:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "521:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "515:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 380,
                            "nodeType": "ExpressionStatement",
                            "src": "515:8:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 381,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "537:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "542:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "537:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 384,
                            "nodeType": "ExpressionStatement",
                            "src": "537:7:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 387,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "568:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030",
                          "id": 388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "573:11:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4294967296_by_1",
                            "typeString": "int_const 4294967296"
                          },
                          "value": "0x100000000"
                        },
                        "src": "568:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 399,
                      "nodeType": "IfStatement",
                      "src": "564:76:2",
                      "trueBody": {
                        "id": 398,
                        "nodeType": "Block",
                        "src": "586:54:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 390,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "600:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "606:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "600:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 393,
                            "nodeType": "ExpressionStatement",
                            "src": "600:8:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 394,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "622:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "627:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "622:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 397,
                            "nodeType": "ExpressionStatement",
                            "src": "622:7:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 400,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "653:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030",
                          "id": 401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "658:7:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_65536_by_1",
                            "typeString": "int_const 65536"
                          },
                          "value": "0x10000"
                        },
                        "src": "653:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 412,
                      "nodeType": "IfStatement",
                      "src": "649:72:2",
                      "trueBody": {
                        "id": 411,
                        "nodeType": "Block",
                        "src": "667:54:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 403,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "681:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "687:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "681:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 406,
                            "nodeType": "ExpressionStatement",
                            "src": "681:8:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 407,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "703:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "708:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "703:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 410,
                            "nodeType": "ExpressionStatement",
                            "src": "703:7:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 413,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "734:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030",
                          "id": 414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "739:5:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "0x100"
                        },
                        "src": "734:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 425,
                      "nodeType": "IfStatement",
                      "src": "730:68:2",
                      "trueBody": {
                        "id": 424,
                        "nodeType": "Block",
                        "src": "746:52:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 416,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "760:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "766:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "760:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 419,
                            "nodeType": "ExpressionStatement",
                            "src": "760:7:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 420,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "781:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "786:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "781:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 423,
                            "nodeType": "ExpressionStatement",
                            "src": "781:6:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 426,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "811:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130",
                          "id": 427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "816:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "0x10"
                        },
                        "src": "811:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 438,
                      "nodeType": "IfStatement",
                      "src": "807:67:2",
                      "trueBody": {
                        "id": 437,
                        "nodeType": "Block",
                        "src": "822:52:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 429,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "836:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "842:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "836:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 432,
                            "nodeType": "ExpressionStatement",
                            "src": "836:7:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 433,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "857:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "862:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "857:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 436,
                            "nodeType": "ExpressionStatement",
                            "src": "857:6:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 439,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "887:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307834",
                          "id": 440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "892:3:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "0x4"
                        },
                        "src": "887:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 451,
                      "nodeType": "IfStatement",
                      "src": "883:66:2",
                      "trueBody": {
                        "id": 450,
                        "nodeType": "Block",
                        "src": "897:52:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 442,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 349,
                                "src": "911:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "917:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "911:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 445,
                            "nodeType": "ExpressionStatement",
                            "src": "911:7:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 446,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "932:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "937:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "932:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 449,
                            "nodeType": "ExpressionStatement",
                            "src": "932:6:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 452,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 349,
                          "src": "962:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307832",
                          "id": 453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "967:3:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "0x2"
                        },
                        "src": "962:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 459,
                      "nodeType": "IfStatement",
                      "src": "958:20:2",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 455,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 352,
                            "src": "972:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "977:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "972:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 458,
                        "nodeType": "ExpressionStatement",
                        "src": "972:6:2"
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 461,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mostSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 350,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 349,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 461,
                      "src": "245:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 348,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "244:11:2"
                },
                "returnParameters": {
                  "id": 353,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 352,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 461,
                      "src": "279:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 351,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "279:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "278:9:2"
                },
                "scope": 623,
                "src": "217:768:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 621,
                  "nodeType": "Block",
                  "src": "1282:830:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 469,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 463,
                              "src": "1300:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1304:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1300:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726f",
                            "id": 472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1307:36:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                              "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                            },
                            "value": "BitMath::leastSignificantBit: zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                              "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                            }
                          ],
                          "id": 468,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1292:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1292:52:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 474,
                      "nodeType": "ExpressionStatement",
                      "src": "1292:52:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 475,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 466,
                          "src": "1355:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "323535",
                          "id": 476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1359:3:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          },
                          "value": "255"
                        },
                        "src": "1355:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 478,
                      "nodeType": "ExpressionStatement",
                      "src": "1355:7:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 479,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1376:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1388:2:2",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1389:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1380:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 480,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1380:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1380:11:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "1376:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1394:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1376:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 497,
                        "nodeType": "Block",
                        "src": "1436:34:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 493,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "1450:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1456:3:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "1450:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 496,
                            "nodeType": "ExpressionStatement",
                            "src": "1450:9:2"
                          }
                        ]
                      },
                      "id": 498,
                      "nodeType": "IfStatement",
                      "src": "1372:98:2",
                      "trueBody": {
                        "id": 492,
                        "nodeType": "Block",
                        "src": "1397:33:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 488,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "1411:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1416:3:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "1411:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 491,
                            "nodeType": "ExpressionStatement",
                            "src": "1411:8:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 499,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1483:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1494:2:2",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1495:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1487:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 500,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1487:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1487:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "1483:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1500:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1483:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 517,
                        "nodeType": "Block",
                        "src": "1541:33:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 513,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "1555:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 514,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1561:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "1555:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 516,
                            "nodeType": "ExpressionStatement",
                            "src": "1555:8:2"
                          }
                        ]
                      },
                      "id": 518,
                      "nodeType": "IfStatement",
                      "src": "1479:95:2",
                      "trueBody": {
                        "id": 512,
                        "nodeType": "Block",
                        "src": "1503:32:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 508,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "1517:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1522:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "1517:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 511,
                            "nodeType": "ExpressionStatement",
                            "src": "1517:7:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 519,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1587:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1598:2:2",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1599:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1591:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 520,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1591:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1591:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "1587:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1604:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1587:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 537,
                        "nodeType": "Block",
                        "src": "1645:33:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 533,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "1659:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1665:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "1659:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 536,
                            "nodeType": "ExpressionStatement",
                            "src": "1659:8:2"
                          }
                        ]
                      },
                      "id": 538,
                      "nodeType": "IfStatement",
                      "src": "1583:95:2",
                      "trueBody": {
                        "id": 532,
                        "nodeType": "Block",
                        "src": "1607:32:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 528,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "1621:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1626:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "1621:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 531,
                            "nodeType": "ExpressionStatement",
                            "src": "1621:7:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 539,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1691:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1702:2:2",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1703:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1695:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              },
                              "typeName": {
                                "id": 540,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "1695:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1695:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "1691:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1708:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1691:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 557,
                        "nodeType": "Block",
                        "src": "1749:33:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 553,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "1763:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1769:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "1763:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 556,
                            "nodeType": "ExpressionStatement",
                            "src": "1763:8:2"
                          }
                        ]
                      },
                      "id": 558,
                      "nodeType": "IfStatement",
                      "src": "1687:95:2",
                      "trueBody": {
                        "id": 552,
                        "nodeType": "Block",
                        "src": "1711:32:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 548,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "1725:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1730:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "1725:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 551,
                            "nodeType": "ExpressionStatement",
                            "src": "1725:7:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 559,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1795:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1805:2:2",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1806:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1799:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 560,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "1799:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1799:9:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1795:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1811:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1795:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 577,
                        "nodeType": "Block",
                        "src": "1851:32:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 573,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "1865:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1871:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1865:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 576,
                            "nodeType": "ExpressionStatement",
                            "src": "1865:7:2"
                          }
                        ]
                      },
                      "id": 578,
                      "nodeType": "IfStatement",
                      "src": "1791:92:2",
                      "trueBody": {
                        "id": 572,
                        "nodeType": "Block",
                        "src": "1814:31:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 568,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "1828:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1833:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1828:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 571,
                            "nodeType": "ExpressionStatement",
                            "src": "1828:6:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 579,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1896:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307866",
                            "id": 580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1900:3:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_15_by_1",
                              "typeString": "int_const 15"
                            },
                            "value": "0xf"
                          },
                          "src": "1896:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1906:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1896:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 593,
                        "nodeType": "Block",
                        "src": "1946:32:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 589,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "1960:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1966:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1960:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 592,
                            "nodeType": "ExpressionStatement",
                            "src": "1960:7:2"
                          }
                        ]
                      },
                      "id": 594,
                      "nodeType": "IfStatement",
                      "src": "1892:86:2",
                      "trueBody": {
                        "id": 588,
                        "nodeType": "Block",
                        "src": "1909:31:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 584,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "1923:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1928:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1923:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 587,
                            "nodeType": "ExpressionStatement",
                            "src": "1923:6:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 595,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1991:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307833",
                            "id": 596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1995:3:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "0x3"
                          },
                          "src": "1991:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2001:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1991:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 609,
                        "nodeType": "Block",
                        "src": "2041:32:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 605,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "2055:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2061:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "2055:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 608,
                            "nodeType": "ExpressionStatement",
                            "src": "2055:7:2"
                          }
                        ]
                      },
                      "id": 610,
                      "nodeType": "IfStatement",
                      "src": "1987:86:2",
                      "trueBody": {
                        "id": 604,
                        "nodeType": "Block",
                        "src": "2004:31:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 600,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 466,
                                "src": "2018:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2023:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "2018:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 603,
                            "nodeType": "ExpressionStatement",
                            "src": "2018:6:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 611,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "2086:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307831",
                            "id": 612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2090:3:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "0x1"
                          },
                          "src": "2086:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2096:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2086:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 620,
                      "nodeType": "IfStatement",
                      "src": "2082:23:2",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 616,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 466,
                            "src": "2099:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2104:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2099:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 619,
                        "nodeType": "ExpressionStatement",
                        "src": "2099:6:2"
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 622,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "leastSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 464,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 463,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 622,
                      "src": "1239:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 462,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1239:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1238:11:2"
                },
                "returnParameters": {
                  "id": 467,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 466,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 622,
                      "src": "1273:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 465,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1273:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1272:9:2"
                },
                "scope": 623,
                "src": "1210:902:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 624,
            "src": "71:2043:2"
          }
        ],
        "src": "45:2070:2"
      }
    },
    "contracts/libraries/FixedPoint.sol": {
      "id": 3,
      "AST": {
        "absolutePath": "contracts/libraries/FixedPoint.sol",
        "exportedSymbols": {
          "FixedPoint": [
            1252
          ]
        },
        "id": 1253,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 625,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "45:24:3"
          },
          {
            "absolutePath": "contracts/libraries/FullMath.sol",
            "file": "./FullMath.sol",
            "id": 626,
            "nodeType": "ImportDirective",
            "scope": 1253,
            "sourceUnit": 1474,
            "src": "71:24:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/Babylonian.sol",
            "file": "./Babylonian.sol",
            "id": 627,
            "nodeType": "ImportDirective",
            "scope": 1253,
            "sourceUnit": 346,
            "src": "96:26:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/BitMath.sol",
            "file": "./BitMath.sol",
            "id": 628,
            "nodeType": "ImportDirective",
            "scope": 1253,
            "sourceUnit": 624,
            "src": "123:23:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1252,
            "linearizedBaseContracts": [
              1252
            ],
            "name": "FixedPoint",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "canonicalName": "FixedPoint.uq112x112",
                "id": 631,
                "members": [
                  {
                    "constant": false,
                    "id": 630,
                    "mutability": "mutable",
                    "name": "_x",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 631,
                    "src": "363:10:3",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    },
                    "typeName": {
                      "id": 629,
                      "name": "uint224",
                      "nodeType": "ElementaryTypeName",
                      "src": "363:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "uq112x112",
                "nodeType": "StructDefinition",
                "scope": 1252,
                "src": "336:44:3",
                "visibility": "public"
              },
              {
                "canonicalName": "FixedPoint.uq144x112",
                "id": 634,
                "members": [
                  {
                    "constant": false,
                    "id": 633,
                    "mutability": "mutable",
                    "name": "_x",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 634,
                    "src": "473:10:3",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 632,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "473:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "uq144x112",
                "nodeType": "StructDefinition",
                "scope": 1252,
                "src": "446:44:3",
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "552f888a",
                "id": 637,
                "mutability": "constant",
                "name": "RESOLUTION",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1252,
                "src": "496:38:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 635,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "496:5:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "313132",
                  "id": 636,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "531:3:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_112_by_1",
                    "typeString": "int_const 112"
                  },
                  "value": "112"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "3bf7a83e",
                "id": 640,
                "mutability": "constant",
                "name": "Q112",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1252,
                "src": "540:62:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 638,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "540:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "30783130303030303030303030303030303030303030303030303030303030",
                  "id": 639,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "571:31:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  },
                  "value": "0x10000000000000000000000000000"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 643,
                "mutability": "constant",
                "name": "Q224",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1252,
                "src": "618:91:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 641,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "618:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                  "id": 642,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "650:59:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1",
                    "typeString": "int_const 2695...(60 digits omitted)...9216"
                  },
                  "value": "0x100000000000000000000000000000000000000000000000000000000"
                },
                "visibility": "private"
              },
              {
                "constant": true,
                "id": 646,
                "mutability": "constant",
                "name": "LOWER_MASK",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1252,
                "src": "725:68:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 644,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "725:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307866666666666666666666666666666666666666666666666666666666",
                  "id": 645,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "763:30:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0095"
                  },
                  "value": "0xffffffffffffffffffffffffffff"
                },
                "visibility": "private"
              },
              {
                "body": {
                  "id": 662,
                  "nodeType": "Block",
                  "src": "946:59:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 656,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 648,
                                  "src": "981:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                ],
                                "id": 655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "973:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 654,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "973:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "973:10:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 658,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "987:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "973:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 653,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 631,
                          "src": "963:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "963:35:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 652,
                      "id": 661,
                      "nodeType": "Return",
                      "src": "956:42:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 663,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 649,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 648,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 663,
                      "src": "894:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 647,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "894:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "893:11:3"
                },
                "returnParameters": {
                  "id": 652,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 651,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 663,
                      "src": "928:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 650,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "928:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "927:18:3"
                },
                "scope": 1252,
                "src": "878:127:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 679,
                  "nodeType": "Block",
                  "src": "1122:59:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 673,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 665,
                                  "src": "1157:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint144",
                                    "typeString": "uint144"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint144",
                                    "typeString": "uint144"
                                  }
                                ],
                                "id": 672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1149:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 671,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1149:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1149:10:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 675,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "1163:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "1149:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 670,
                          "name": "uq144x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "1139:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq144x112_$634_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq144x112 storage pointer)"
                          }
                        },
                        "id": 677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1139:35:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 669,
                      "id": 678,
                      "nodeType": "Return",
                      "src": "1132:42:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 680,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 666,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 665,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 680,
                      "src": "1070:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 664,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "1070:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1069:11:3"
                },
                "returnParameters": {
                  "id": 669,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 668,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 680,
                      "src": "1104:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 667,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 634,
                        "src": "1104:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1103:18:3"
                },
                "scope": 1252,
                "src": "1051:130:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 695,
                  "nodeType": "Block",
                  "src": "1335:54:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 689,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 682,
                                "src": "1360:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 690,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "1360:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 691,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "1371:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "1360:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1352:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 687,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1352:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1352:30:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "functionReturnParameters": 686,
                      "id": 694,
                      "nodeType": "Return",
                      "src": "1345:37:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 696,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 683,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 682,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 696,
                      "src": "1280:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 681,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1280:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1279:23:3"
                },
                "returnParameters": {
                  "id": 686,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 685,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 696,
                      "src": "1326:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 684,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1326:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1325:9:3"
                },
                "scope": 1252,
                "src": "1264:125:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 711,
                  "nodeType": "Block",
                  "src": "1546:54:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 705,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 698,
                                "src": "1571:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                                  "typeString": "struct FixedPoint.uq144x112 memory"
                                }
                              },
                              "id": 706,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 633,
                              "src": "1571:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 707,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "1582:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "1571:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1563:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint144_$",
                            "typeString": "type(uint144)"
                          },
                          "typeName": {
                            "id": 703,
                            "name": "uint144",
                            "nodeType": "ElementaryTypeName",
                            "src": "1563:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1563:30:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "functionReturnParameters": 702,
                      "id": 710,
                      "nodeType": "Return",
                      "src": "1556:37:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 712,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 699,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 698,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 712,
                      "src": "1491:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 697,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 634,
                        "src": "1491:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1490:23:3"
                },
                "returnParameters": {
                  "id": 702,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 701,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 712,
                      "src": "1537:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 700,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "1537:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1536:9:3"
                },
                "scope": 1252,
                "src": "1472:128:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 749,
                  "nodeType": "Block",
                  "src": "1782:149:3",
                  "statements": [
                    {
                      "assignments": [
                        722
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 722,
                          "mutability": "mutable",
                          "name": "z",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 749,
                          "src": "1792:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 721,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1792:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 724,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1804:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1792:13:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 726,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 716,
                                "src": "1823:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1828:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1823:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 734,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 729,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 722,
                                        "src": "1834:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 733,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 730,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 714,
                                            "src": "1838:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                              "typeString": "struct FixedPoint.uq112x112 memory"
                                            }
                                          },
                                          "id": 731,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "_x",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 630,
                                          "src": "1838:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 732,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 716,
                                          "src": "1848:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1838:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1834:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 735,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1833:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 736,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 716,
                                  "src": "1853:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1833:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 738,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 714,
                                  "src": "1858:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                  }
                                },
                                "id": 739,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_x",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 630,
                                "src": "1858:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint224",
                                  "typeString": "uint224"
                                }
                              },
                              "src": "1833:32:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1823:42:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c3a206f766572666c6f77",
                            "id": 742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1867:27:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4948de739aba85946a14984f472451f25a4920e9fae93fb8ed011d3024f8abcf",
                              "typeString": "literal_string \"FixedPoint::mul: overflow\""
                            },
                            "value": "FixedPoint::mul: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4948de739aba85946a14984f472451f25a4920e9fae93fb8ed011d3024f8abcf",
                              "typeString": "literal_string \"FixedPoint::mul: overflow\""
                            }
                          ],
                          "id": 725,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1815:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1815:80:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 744,
                      "nodeType": "ExpressionStatement",
                      "src": "1815:80:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 746,
                            "name": "z",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 722,
                            "src": "1922:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 745,
                          "name": "uq144x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "1912:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq144x112_$634_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq144x112 storage pointer)"
                          }
                        },
                        "id": 747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1912:12:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 720,
                      "id": 748,
                      "nodeType": "Return",
                      "src": "1905:19:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 750,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 717,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 714,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 750,
                      "src": "1707:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 713,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1707:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 716,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 750,
                      "src": "1730:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 715,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1730:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1706:34:3"
                },
                "returnParameters": {
                  "id": 720,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 719,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 750,
                      "src": "1764:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 718,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 634,
                        "src": "1764:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1763:18:3"
                },
                "scope": 1252,
                "src": "1694:237:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 801,
                  "nodeType": "Block",
                  "src": "2109:190:3",
                  "statements": [
                    {
                      "assignments": [
                        760
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 760,
                          "mutability": "mutable",
                          "name": "z",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 801,
                          "src": "2119:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 759,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2119:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 777,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 763,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 752,
                              "src": "2147:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 764,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 630,
                            "src": "2147:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 767,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 754,
                                    "src": "2164:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2168:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "2164:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "id": 772,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 754,
                                  "src": "2177:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "2164:14:3",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "2172:2:3",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 770,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 754,
                                    "src": "2173:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2156:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 765,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2156:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2156:23:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 775,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 640,
                            "src": "2181:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 761,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1473,
                            "src": "2131:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$1473_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1472,
                          "src": "2131:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2131:55:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2119:67:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 779,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 760,
                              "src": "2204:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                "typeString": "int_const 5789...(69 digits omitted)...9968"
                              },
                              "id": 782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2208:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "323535",
                                "id": 781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2211:3:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "255"
                              },
                              "src": "2208:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                "typeString": "int_const 5789...(69 digits omitted)...9968"
                              }
                            },
                            "src": "2204:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c693a206f766572666c6f77",
                            "id": 784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2216:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a352085f3dae8adf2989a66ed19b1d5cfc2957ebdd82dbbc3ae8101610d3fd00",
                              "typeString": "literal_string \"FixedPoint::muli: overflow\""
                            },
                            "value": "FixedPoint::muli: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a352085f3dae8adf2989a66ed19b1d5cfc2957ebdd82dbbc3ae8101610d3fd00",
                              "typeString": "literal_string \"FixedPoint::muli: overflow\""
                            }
                          ],
                          "id": 778,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2196:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2196:49:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 786,
                      "nodeType": "ExpressionStatement",
                      "src": "2196:49:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 787,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 754,
                            "src": "2262:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2266:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2262:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 797,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 760,
                              "src": "2290:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2283:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 795,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2283:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2283:9:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2262:30:3",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "2270:10:3",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 792,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 760,
                                "src": "2278:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2271:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 790,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2271:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2271:9:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "functionReturnParameters": 758,
                      "id": 800,
                      "nodeType": "Return",
                      "src": "2255:37:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 802,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "muli",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 755,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 752,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 802,
                      "src": "2045:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 751,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2045:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 754,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 802,
                      "src": "2068:8:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 753,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2068:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2044:33:3"
                },
                "returnParameters": {
                  "id": 758,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 757,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 802,
                      "src": "2101:6:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 756,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2101:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2100:8:3"
                },
                "scope": 1252,
                "src": "2031:268:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 949,
                  "nodeType": "Block",
                  "src": "2487:1160:3",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 819,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 811,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 804,
                              "src": "2501:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 812,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 630,
                            "src": "2501:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2512:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2501:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 815,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 806,
                              "src": "2517:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 816,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 630,
                            "src": "2517:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2529:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2517:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2501:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 825,
                      "nodeType": "IfStatement",
                      "src": "2497:79:3",
                      "trueBody": {
                        "id": 824,
                        "nodeType": "Block",
                        "src": "2532:44:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2563:1:3",
                                  "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"
                                  }
                                ],
                                "id": 820,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 631,
                                "src": "2553:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2553:12:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 810,
                            "id": 823,
                            "nodeType": "Return",
                            "src": "2546:19:3"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        827
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 827,
                          "mutability": "mutable",
                          "name": "upper_self",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "2585:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 826,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2585:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 835,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 830,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 804,
                                "src": "2614:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 831,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "2614:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 832,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "2625:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2614:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2606:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 828,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2606:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2606:30:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2585:51:3"
                    },
                    {
                      "assignments": [
                        837
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 837,
                          "mutability": "mutable",
                          "name": "lower_self",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "2655:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 836,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2655:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 845,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 840,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 804,
                                "src": "2684:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 841,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "2684:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 842,
                              "name": "LOWER_MASK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 646,
                              "src": "2694:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2684:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2676:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 838,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2676:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2676:29:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2655:50:3"
                    },
                    {
                      "assignments": [
                        847
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 847,
                          "mutability": "mutable",
                          "name": "upper_other",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "2727:19:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 846,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2727:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 855,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 850,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 806,
                                "src": "2757:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 851,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "2757:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 852,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "2769:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2757:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2749:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 848,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2749:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2749:31:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2727:53:3"
                    },
                    {
                      "assignments": [
                        857
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 857,
                          "mutability": "mutable",
                          "name": "lower_other",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "2799:19:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 856,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2799:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 865,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 860,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 806,
                                "src": "2829:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 861,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "2829:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 862,
                              "name": "LOWER_MASK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 646,
                              "src": "2840:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2829:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2821:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 858,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2821:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2821:30:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2799:52:3"
                    },
                    {
                      "assignments": [
                        867
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 867,
                          "mutability": "mutable",
                          "name": "upper",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "2902:13:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 866,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "2902:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 874,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 870,
                              "name": "upper_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "2926:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2918:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 868,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "2918:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2918:19:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 872,
                          "name": "upper_other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 847,
                          "src": "2940:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "2918:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2902:49:3"
                    },
                    {
                      "assignments": [
                        876
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 876,
                          "mutability": "mutable",
                          "name": "lower",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "2970:13:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 875,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "2970:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 883,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 882,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 879,
                              "name": "lower_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 837,
                              "src": "2994:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2986:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 877,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "2986:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2986:19:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 881,
                          "name": "lower_other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 857,
                          "src": "3008:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "2986:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2970:49:3"
                    },
                    {
                      "assignments": [
                        885
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 885,
                          "mutability": "mutable",
                          "name": "uppers_lowero",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "3041:21:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 884,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "3041:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 892,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 888,
                              "name": "upper_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "3073:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3065:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 886,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "3065:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3065:19:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 890,
                          "name": "lower_other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 857,
                          "src": "3087:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "3065:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3041:57:3"
                    },
                    {
                      "assignments": [
                        894
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 894,
                          "mutability": "mutable",
                          "name": "uppero_lowers",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "3120:21:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 893,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "3120:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 901,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 900,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 897,
                              "name": "upper_other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 847,
                              "src": "3152:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3144:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 895,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "3144:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3144:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 899,
                          "name": "lower_self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 837,
                          "src": "3167:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "3144:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3120:57:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 903,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 867,
                              "src": "3254:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "3271:2:3",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3272:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3263:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint112_$",
                                  "typeString": "type(uint112)"
                                },
                                "typeName": {
                                  "id": 904,
                                  "name": "uint112",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3263:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3263:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "src": "3254:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f77",
                            "id": 910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3276:35:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b52493e04417af33ef99b1a68ac11af8712869fc1c194d72e6b0646c5968b5de",
                              "typeString": "literal_string \"FixedPoint::muluq: upper overflow\""
                            },
                            "value": "FixedPoint::muluq: upper overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b52493e04417af33ef99b1a68ac11af8712869fc1c194d72e6b0646c5968b5de",
                              "typeString": "literal_string \"FixedPoint::muluq: upper overflow\""
                            }
                          ],
                          "id": 902,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3246:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3246:66:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 912,
                      "nodeType": "ExpressionStatement",
                      "src": "3246:66:3"
                    },
                    {
                      "assignments": [
                        914
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 914,
                          "mutability": "mutable",
                          "name": "sum",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 949,
                          "src": "3387:11:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 913,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3387:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 930,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  },
                                  "id": 919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 917,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 867,
                                    "src": "3409:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 918,
                                    "name": "RESOLUTION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 637,
                                    "src": "3418:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "3409:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3401:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 915,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3401:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3401:28:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 921,
                              "name": "uppers_lowero",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 885,
                              "src": "3432:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "3401:44:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 923,
                            "name": "uppero_lowers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 894,
                            "src": "3448:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "3401:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              },
                              "id": 927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 925,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 876,
                                "src": "3465:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint224",
                                  "typeString": "uint224"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 926,
                                "name": "RESOLUTION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 637,
                                "src": "3474:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "3465:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            }
                          ],
                          "id": 928,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3464:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "3401:84:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3387:98:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 932,
                              "name": "sum",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 914,
                              "src": "3545:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 936,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "3560:2:3",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3561:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3552:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 933,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3552:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3552:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "3545:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f77",
                            "id": 939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3565:33:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a26cd9bd987e78cd1c5f6e66afec1e08b996885c9b9c44f1a5fd3a63466b2eff",
                              "typeString": "literal_string \"FixedPoint::muluq: sum overflow\""
                            },
                            "value": "FixedPoint::muluq: sum overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a26cd9bd987e78cd1c5f6e66afec1e08b996885c9b9c44f1a5fd3a63466b2eff",
                              "typeString": "literal_string \"FixedPoint::muluq: sum overflow\""
                            }
                          ],
                          "id": 931,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3537:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3537:62:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 941,
                      "nodeType": "ExpressionStatement",
                      "src": "3537:62:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 945,
                                "name": "sum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 914,
                                "src": "3635:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3627:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 943,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "3627:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3627:12:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 942,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 631,
                          "src": "3617:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3617:23:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 810,
                      "id": 948,
                      "nodeType": "Return",
                      "src": "3610:30:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 950,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "muluq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 807,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 804,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 950,
                      "src": "2399:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 803,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2399:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 806,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 950,
                      "src": "2422:22:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 805,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2422:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2398:47:3"
                },
                "returnParameters": {
                  "id": 810,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 809,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 950,
                      "src": "2469:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 808,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2469:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2468:18:3"
                },
                "scope": 1252,
                "src": "2384:1263:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1052,
                  "nodeType": "Block",
                  "src": "3820:590:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 960,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 954,
                                "src": "3838:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 961,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "3838:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3849:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3838:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a64697675713a206469766973696f6e206279207a65726f",
                            "id": 964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3852:37:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_422bc21f2eb91510a9cc7c0ead94b70d98345c9617c11cff466b9a69e8fa701d",
                              "typeString": "literal_string \"FixedPoint::divuq: division by zero\""
                            },
                            "value": "FixedPoint::divuq: division by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_422bc21f2eb91510a9cc7c0ead94b70d98345c9617c11cff466b9a69e8fa701d",
                              "typeString": "literal_string \"FixedPoint::divuq: division by zero\""
                            }
                          ],
                          "id": 959,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3830:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3830:60:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 966,
                      "nodeType": "ExpressionStatement",
                      "src": "3830:60:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 967,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 952,
                            "src": "3904:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 968,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 630,
                          "src": "3904:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 969,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 954,
                            "src": "3915:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 970,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 630,
                          "src": "3915:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "3904:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 980,
                      "nodeType": "IfStatement",
                      "src": "3900:81:3",
                      "trueBody": {
                        "id": 979,
                        "nodeType": "Block",
                        "src": "3925:56:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 975,
                                      "name": "Q112",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 640,
                                      "src": "3964:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 974,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3956:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 973,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3956:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3956:13:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 972,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 631,
                                "src": "3946:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3946:24:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 958,
                            "id": 978,
                            "nodeType": "Return",
                            "src": "3939:31:3"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 981,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 952,
                            "src": "3994:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 982,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 630,
                          "src": "3994:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "4013:2:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4014:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4005:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 983,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "4005:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4005:11:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "3994:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1022,
                      "nodeType": "IfStatement",
                      "src": "3990:232:3",
                      "trueBody": {
                        "id": 1021,
                        "nodeType": "Block",
                        "src": "4018:204:3",
                        "statements": [
                          {
                            "assignments": [
                              990
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 990,
                                "mutability": "mutable",
                                "name": "value",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1021,
                                "src": "4032:13:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 989,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4032:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1002,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 997,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 993,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 952,
                                            "src": "4057:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                              "typeString": "struct FixedPoint.uq112x112 memory"
                                            }
                                          },
                                          "id": 994,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "_x",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 630,
                                          "src": "4057:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        ],
                                        "id": 992,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4049:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 991,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4049:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 995,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4049:16:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 996,
                                      "name": "RESOLUTION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 637,
                                      "src": "4069:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "4049:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 998,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4048:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 999,
                                  "name": "other",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 954,
                                  "src": "4083:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                  }
                                },
                                "id": 1000,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_x",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 630,
                                "src": "4083:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint224",
                                  "typeString": "uint224"
                                }
                              },
                              "src": "4048:43:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4032:59:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1004,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 990,
                                    "src": "4113:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1008,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "4130:2:3",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1007,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4131:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "id": 1006,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4122:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 1005,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4122:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1009,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4122:11:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "src": "4113:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4669786564506f696e743a3a64697675713a206f766572666c6f77",
                                  "id": 1011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4135:29:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                                    "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                                  },
                                  "value": "FixedPoint::divuq: overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                                    "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                                  }
                                ],
                                "id": 1003,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "4105:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 1012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4105:60:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1013,
                            "nodeType": "ExpressionStatement",
                            "src": "4105:60:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1017,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 990,
                                      "src": "4204:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4196:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 1015,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4196:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1018,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4196:14:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 1014,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 631,
                                "src": "4186:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 1019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4186:25:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 958,
                            "id": 1020,
                            "nodeType": "Return",
                            "src": "4179:32:3"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1024
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1024,
                          "mutability": "mutable",
                          "name": "result",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1052,
                          "src": "4232:14:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1023,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4232:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1033,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1027,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 640,
                            "src": "4265:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1028,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 952,
                              "src": "4271:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 1029,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 630,
                            "src": "4271:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1030,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 954,
                              "src": "4280:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 1031,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 630,
                            "src": "4280:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1025,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1473,
                            "src": "4249:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$1473_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 1026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1472,
                          "src": "4249:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4249:40:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4232:57:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1035,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1024,
                              "src": "4307:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "4325:2:3",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1038,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4326:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 1037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4317:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 1036,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4317:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4317:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "4307:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a64697675713a206f766572666c6f77",
                            "id": 1042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4330:29:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                              "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                            },
                            "value": "FixedPoint::divuq: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                              "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                            }
                          ],
                          "id": 1034,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4299:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4299:61:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1044,
                      "nodeType": "ExpressionStatement",
                      "src": "4299:61:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1048,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1024,
                                "src": "4395:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4387:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 1046,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "4387:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4387:15:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 1045,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 631,
                          "src": "4377:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 1050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4377:26:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 958,
                      "id": 1051,
                      "nodeType": "Return",
                      "src": "4370:33:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 1053,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "divuq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 955,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 952,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1053,
                      "src": "3732:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 951,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "3732:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 954,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1053,
                      "src": "3755:22:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 953,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "3755:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3731:47:3"
                },
                "returnParameters": {
                  "id": 958,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 957,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1053,
                      "src": "3802:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 956,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "3802:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3801:18:3"
                },
                "scope": 1252,
                "src": "3717:693:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1142,
                  "nodeType": "Block",
                  "src": "4625:607:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1063,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1057,
                              "src": "4643:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4657:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4643:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f",
                            "id": 1066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4660:40:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e8a6c8dfacd0a41f2501735d8ee26d996b9e7e81ff5467dfdfd11a3728a15e7",
                              "typeString": "literal_string \"FixedPoint::fraction: division by zero\""
                            },
                            "value": "FixedPoint::fraction: division by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5e8a6c8dfacd0a41f2501735d8ee26d996b9e7e81ff5467dfdfd11a3728a15e7",
                              "typeString": "literal_string \"FixedPoint::fraction: division by zero\""
                            }
                          ],
                          "id": 1062,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4635:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4635:66:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1068,
                      "nodeType": "ExpressionStatement",
                      "src": "4635:66:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1069,
                          "name": "numerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1055,
                          "src": "4715:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4728:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4715:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1077,
                      "nodeType": "IfStatement",
                      "src": "4711:50:3",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4759:1:3",
                              "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"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1072,
                              "name": "FixedPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1252,
                              "src": "4738:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                                "typeString": "type(library FixedPoint)"
                              }
                            },
                            "id": 1073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "uq112x112",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 631,
                            "src": "4738:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                              "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                            }
                          },
                          "id": 1075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4738:23:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                            "typeString": "struct FixedPoint.uq112x112 memory"
                          }
                        },
                        "functionReturnParameters": 1061,
                        "id": 1076,
                        "nodeType": "Return",
                        "src": "4731:30:3"
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1078,
                          "name": "numerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1055,
                          "src": "4776:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "4797:2:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4798:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 1080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4789:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 1079,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "4789:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4789:11:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "4776:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1140,
                        "nodeType": "Block",
                        "src": "5014:212:3",
                        "statements": [
                          {
                            "assignments": [
                              1114
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1114,
                                "mutability": "mutable",
                                "name": "result",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1140,
                                "src": "5028:14:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1113,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5028:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1121,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1117,
                                  "name": "numerator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1055,
                                  "src": "5061:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1118,
                                  "name": "Q112",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 640,
                                  "src": "5072:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1119,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1057,
                                  "src": "5078:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1115,
                                  "name": "FullMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1473,
                                  "src": "5045:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FullMath_$1473_$",
                                    "typeString": "type(library FullMath)"
                                  }
                                },
                                "id": 1116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mulDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1472,
                                "src": "5045:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5045:45:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5028:62:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1123,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1114,
                                    "src": "5112:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1127,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "5130:2:3",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1126,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5131:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "id": 1125,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5122:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 1124,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5122:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1128,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5122:11:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "src": "5112:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77",
                                  "id": 1130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5135:32:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  },
                                  "value": "FixedPoint::fraction: overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  }
                                ],
                                "id": 1122,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "5104:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 1131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5104:64:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1132,
                            "nodeType": "ExpressionStatement",
                            "src": "5104:64:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1136,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1114,
                                      "src": "5207:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5199:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 1134,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5199:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5199:15:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 1133,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 631,
                                "src": "5189:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 1138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5189:26:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 1061,
                            "id": 1139,
                            "nodeType": "Return",
                            "src": "5182:33:3"
                          }
                        ]
                      },
                      "id": 1141,
                      "nodeType": "IfStatement",
                      "src": "4772:454:3",
                      "trueBody": {
                        "id": 1112,
                        "nodeType": "Block",
                        "src": "4802:206:3",
                        "statements": [
                          {
                            "assignments": [
                              1086
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1086,
                                "mutability": "mutable",
                                "name": "result",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1112,
                                "src": "4816:14:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1085,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4816:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1093,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1087,
                                      "name": "numerator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1055,
                                      "src": "4834:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1088,
                                      "name": "RESOLUTION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 637,
                                      "src": "4847:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "4834:23:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1090,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4833:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1091,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1057,
                                "src": "4861:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4833:39:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4816:56:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1095,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1086,
                                    "src": "4894:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "4912:2:3",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1098,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4913:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "id": 1097,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4904:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 1096,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4904:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1100,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4904:11:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "src": "4894:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77",
                                  "id": 1102,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4917:32:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  },
                                  "value": "FixedPoint::fraction: overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  }
                                ],
                                "id": 1094,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "4886:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 1103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4886:64:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1104,
                            "nodeType": "ExpressionStatement",
                            "src": "4886:64:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1108,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1086,
                                      "src": "4989:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1107,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4981:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 1106,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4981:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4981:15:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 1105,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 631,
                                "src": "4971:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 1110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4971:26:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 1061,
                            "id": 1111,
                            "nodeType": "Return",
                            "src": "4964:33:3"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1143,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fraction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1058,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1055,
                      "mutability": "mutable",
                      "name": "numerator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1143,
                      "src": "4544:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1054,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4544:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1057,
                      "mutability": "mutable",
                      "name": "denominator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1143,
                      "src": "4563:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1056,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4563:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4543:40:3"
                },
                "returnParameters": {
                  "id": 1061,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1060,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1143,
                      "src": "4607:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1059,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "4607:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4606:18:3"
                },
                "scope": 1252,
                "src": "4526:706:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1176,
                  "nodeType": "Block",
                  "src": "5404:202:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 1154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1151,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1145,
                                "src": "5422:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 1152,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "5422:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5433:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5422:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a7265636970726f63616c3a207265636970726f63616c206f66207a65726f",
                            "id": 1155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5436:44:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d3029a5a93a398fe526ba88b78683cb8409b11161a7a6252d5ccb5c8f4f8aea1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: reciprocal of zero\""
                            },
                            "value": "FixedPoint::reciprocal: reciprocal of zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d3029a5a93a398fe526ba88b78683cb8409b11161a7a6252d5ccb5c8f4f8aea1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: reciprocal of zero\""
                            }
                          ],
                          "id": 1150,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5414:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5414:67:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1157,
                      "nodeType": "ExpressionStatement",
                      "src": "5414:67:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 1162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1159,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1145,
                                "src": "5499:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 1160,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "5499:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5510:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "5499:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77",
                            "id": 1163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5513:34:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d0c2f767026b31296fb6fcaacdf9d3529986be99f9a71f7d756dd15015fdbac1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: overflow\""
                            },
                            "value": "FixedPoint::reciprocal: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d0c2f767026b31296fb6fcaacdf9d3529986be99f9a71f7d756dd15015fdbac1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: overflow\""
                            }
                          ],
                          "id": 1158,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5491:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5491:57:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1165,
                      "nodeType": "ExpressionStatement",
                      "src": "5491:57:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1169,
                                  "name": "Q224",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 643,
                                  "src": "5583:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1170,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1145,
                                    "src": "5590:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                      "typeString": "struct FixedPoint.uq112x112 memory"
                                    }
                                  },
                                  "id": 1171,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_x",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 630,
                                  "src": "5590:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                },
                                "src": "5583:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5575:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 1167,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "5575:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5575:23:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 1166,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 631,
                          "src": "5565:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 1174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5565:34:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 1149,
                      "id": 1175,
                      "nodeType": "Return",
                      "src": "5558:41:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 1177,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "reciprocal",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1146,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1145,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1177,
                      "src": "5340:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1144,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "5340:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5339:23:3"
                },
                "returnParameters": {
                  "id": 1149,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1148,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1177,
                      "src": "5386:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1147,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "5386:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5385:18:3"
                },
                "scope": 1252,
                "src": "5320:286:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1250,
                  "nodeType": "Block",
                  "src": "5761:372:3",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 1191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1184,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1179,
                            "src": "5775:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 1185,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 630,
                          "src": "5775:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "5794:2:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5795:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 1187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5786:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 1186,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "5786:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5786:11:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "5775:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1209,
                      "nodeType": "IfStatement",
                      "src": "5771:120:3",
                      "trueBody": {
                        "id": 1208,
                        "nodeType": "Block",
                        "src": "5799:92:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1203,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 1199,
                                                  "name": "self",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1179,
                                                  "src": "5862:4:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                                  }
                                                },
                                                "id": 1200,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "_x",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 630,
                                                "src": "5862:7:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint224",
                                                  "typeString": "uint224"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint224",
                                                  "typeString": "uint224"
                                                }
                                              ],
                                              "id": 1198,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "5854:7:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 1197,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5854:7:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 1201,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5854:16:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "313132",
                                            "id": 1202,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5874:3:3",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_112_by_1",
                                              "typeString": "int_const 112"
                                            },
                                            "value": "112"
                                          },
                                          "src": "5854:23:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1195,
                                          "name": "Babylonian",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 345,
                                          "src": "5838:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Babylonian_$345_$",
                                            "typeString": "type(library Babylonian)"
                                          }
                                        },
                                        "id": 1196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sqrt",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 344,
                                        "src": "5838:15:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1204,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5838:40:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5830:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 1193,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5830:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5830:49:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 1192,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 631,
                                "src": "5820:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 1206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5820:60:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 1183,
                            "id": 1207,
                            "nodeType": "Return",
                            "src": "5813:67:3"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1211
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1211,
                          "mutability": "mutable",
                          "name": "safeShiftBits",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1250,
                          "src": "5901:19:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 1210,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "5901:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1219,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "323535",
                          "id": 1212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5923:3:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          },
                          "value": "255"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1215,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1179,
                                "src": "5956:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 1216,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 630,
                              "src": "5956:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1213,
                              "name": "BitMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 623,
                              "src": "5929:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                                "typeString": "type(library BitMath)"
                              }
                            },
                            "id": 1214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mostSignificantBit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 461,
                            "src": "5929:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                              "typeString": "function (uint256) pure returns (uint8)"
                            }
                          },
                          "id": 1217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5929:35:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "5923:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5901:63:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1224,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1220,
                          "name": "safeShiftBits",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1211,
                          "src": "5974:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 1223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1221,
                            "name": "safeShiftBits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1211,
                            "src": "5991:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6007:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "5991:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "5974:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 1225,
                      "nodeType": "ExpressionStatement",
                      "src": "5974:34:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1237,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1233,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1179,
                                              "src": "6067:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                                                "typeString": "struct FixedPoint.uq112x112 memory"
                                              }
                                            },
                                            "id": 1234,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "_x",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 630,
                                            "src": "6067:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint224",
                                              "typeString": "uint224"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint224",
                                              "typeString": "uint224"
                                            }
                                          ],
                                          "id": 1232,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6059:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 1231,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6059:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 1235,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6059:16:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1236,
                                        "name": "safeShiftBits",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1211,
                                        "src": "6079:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "6059:33:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1229,
                                      "name": "Babylonian",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 345,
                                      "src": "6043:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Babylonian_$345_$",
                                        "typeString": "type(library Babylonian)"
                                      }
                                    },
                                    "id": 1230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sqrt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 344,
                                    "src": "6043:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6043:50:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 1244,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            },
                                            "id": 1241,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "313132",
                                              "id": 1239,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6099:3:3",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_112_by_1",
                                                "typeString": "int_const 112"
                                              },
                                              "value": "112"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 1240,
                                              "name": "safeShiftBits",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1211,
                                              "src": "6105:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "6099:19:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          }
                                        ],
                                        "id": 1242,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6098:21:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 1243,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6122:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "6098:25:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "id": 1245,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "6097:27:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "6043:81:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6035:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 1227,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "6035:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6035:90:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 1226,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 631,
                          "src": "6025:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$631_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 1248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6025:101:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 1183,
                      "id": 1249,
                      "nodeType": "Return",
                      "src": "6018:108:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 1251,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1180,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1179,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1251,
                      "src": "5697:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1178,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "5697:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5696:23:3"
                },
                "returnParameters": {
                  "id": 1183,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1182,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1251,
                      "src": "5743:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1181,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "5743:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5742:18:3"
                },
                "scope": 1252,
                "src": "5683:450:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1253,
            "src": "251:5884:3"
          }
        ],
        "src": "45:6091:3"
      }
    },
    "contracts/libraries/FullMath.sol": {
      "id": 4,
      "AST": {
        "absolutePath": "contracts/libraries/FullMath.sol",
        "exportedSymbols": {
          "FullMath": [
            1473
          ]
        },
        "id": 1474,
        "license": "CC-BY-4.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1254,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "38:24:4"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1473,
            "linearizedBaseContracts": [
              1473
            ],
            "name": "FullMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1297,
                  "nodeType": "Block",
                  "src": "300:122:4",
                  "statements": [
                    {
                      "assignments": [
                        1266
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1266,
                          "mutability": "mutable",
                          "name": "mm",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1297,
                          "src": "310:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1265,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "310:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1276,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1268,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1256,
                            "src": "330:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1269,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1258,
                            "src": "333:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "344:2:4",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "345:1:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 1271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "336:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1270,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "336:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "336:11:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1267,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -16,
                          "src": "323:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "323:25:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "310:38:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1277,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1261,
                          "src": "358:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1278,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1256,
                            "src": "362:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1279,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1258,
                            "src": "366:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "362:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "358:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1282,
                      "nodeType": "ExpressionStatement",
                      "src": "358:9:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1283,
                          "name": "h",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1263,
                          "src": "377:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1284,
                            "name": "mm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1266,
                            "src": "381:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1285,
                            "name": "l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1261,
                            "src": "386:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "381:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "377:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1288,
                      "nodeType": "ExpressionStatement",
                      "src": "377:10:4"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1289,
                          "name": "mm",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1266,
                          "src": "401:2:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1290,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1261,
                          "src": "406:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "401:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1296,
                      "nodeType": "IfStatement",
                      "src": "397:18:4",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1292,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1263,
                            "src": "409:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "414:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "409:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1295,
                        "nodeType": "ExpressionStatement",
                        "src": "409:6:4"
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1298,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fullMul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1259,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1256,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1298,
                      "src": "233:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1255,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "233:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1258,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1298,
                      "src": "244:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1257,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "244:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:22:4"
                },
                "returnParameters": {
                  "id": 1264,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1261,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1298,
                      "src": "278:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1260,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "278:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1263,
                      "mutability": "mutable",
                      "name": "h",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1298,
                      "src": "289:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "277:22:4"
                },
                "scope": 1473,
                "src": "216:206:4",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1409,
                  "nodeType": "Block",
                  "src": "539:352:4",
                  "statements": [
                    {
                      "assignments": [
                        1310
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1310,
                          "mutability": "mutable",
                          "name": "pow2",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1409,
                          "src": "549:12:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1309,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "549:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1315,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1311,
                          "name": "d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1304,
                          "src": "564:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "568:2:4",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1312,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1304,
                            "src": "569:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "564:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "549:21:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1316,
                          "name": "d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1304,
                          "src": "580:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "/=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1317,
                          "name": "pow2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1310,
                          "src": "585:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "580:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1319,
                      "nodeType": "ExpressionStatement",
                      "src": "580:9:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1320,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1300,
                          "src": "599:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "/=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1321,
                          "name": "pow2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1310,
                          "src": "604:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "599:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1323,
                      "nodeType": "ExpressionStatement",
                      "src": "599:9:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1324,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1300,
                          "src": "618:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1325,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1302,
                            "src": "623:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1327,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "629:5:4",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "id": 1326,
                                          "name": "pow2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1310,
                                          "src": "630:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 1328,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "628:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1329,
                                    "name": "pow2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1310,
                                    "src": "638:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "628:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "645:1:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "628:18:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1333,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "627:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "623:24:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "618:29:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1336,
                      "nodeType": "ExpressionStatement",
                      "src": "618:29:4"
                    },
                    {
                      "assignments": [
                        1338
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1338,
                          "mutability": "mutable",
                          "name": "r",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1409,
                          "src": "657:9:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1337,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "657:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1340,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "669:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "657:13:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1341,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "680:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "685:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1343,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "689:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1344,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "693:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "689:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "685:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "680:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1348,
                      "nodeType": "ExpressionStatement",
                      "src": "680:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1349,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "704:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "709:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1351,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "713:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1352,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "717:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "713:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "709:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "704:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1356,
                      "nodeType": "ExpressionStatement",
                      "src": "704:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1357,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "728:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "733:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1359,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "737:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1360,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "741:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "737:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "733:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "728:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1364,
                      "nodeType": "ExpressionStatement",
                      "src": "728:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1365,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "752:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "757:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1367,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "761:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1368,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "765:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "761:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "757:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "752:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1372,
                      "nodeType": "ExpressionStatement",
                      "src": "752:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1373,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "776:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "781:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1375,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "785:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1376,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "789:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "785:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "781:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "776:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1380,
                      "nodeType": "ExpressionStatement",
                      "src": "776:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1381,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "800:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "805:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1383,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "809:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1384,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "813:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "809:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "805:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "800:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1388,
                      "nodeType": "ExpressionStatement",
                      "src": "800:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1389,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "824:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "829:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1391,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "833:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1392,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "837:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "833:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "829:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "824:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1396,
                      "nodeType": "ExpressionStatement",
                      "src": "824:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1397,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "848:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "853:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1399,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "857:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1400,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "861:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "857:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "853:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "848:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1404,
                      "nodeType": "ExpressionStatement",
                      "src": "848:14:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1405,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1300,
                          "src": "879:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1406,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1338,
                          "src": "883:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "879:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1308,
                      "id": 1408,
                      "nodeType": "Return",
                      "src": "872:12:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1410,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fullDiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1305,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1300,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "454:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1299,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "454:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1302,
                      "mutability": "mutable",
                      "name": "h",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "473:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1301,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "473:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1304,
                      "mutability": "mutable",
                      "name": "d",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "492:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1303,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "492:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "444:63:4"
                },
                "returnParameters": {
                  "id": 1308,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1307,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "530:7:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1306,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "530:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "529:9:4"
                },
                "scope": 1473,
                "src": "428:463:4",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1471,
                  "nodeType": "Block",
                  "src": "1008:262:4",
                  "statements": [
                    {
                      "assignments": [
                        1422,
                        1424
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1422,
                          "mutability": "mutable",
                          "name": "l",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1471,
                          "src": "1019:9:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1421,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1019:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1424,
                          "mutability": "mutable",
                          "name": "h",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1471,
                          "src": "1030:9:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1423,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1030:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1429,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1426,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1412,
                            "src": "1051:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1427,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1414,
                            "src": "1054:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1425,
                          "name": "fullMul",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1298,
                          "src": "1043:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                          }
                        },
                        "id": 1428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1043:13:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1018:38:4"
                    },
                    {
                      "assignments": [
                        1431
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1431,
                          "mutability": "mutable",
                          "name": "mm",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1471,
                          "src": "1067:10:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1430,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1067:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1437,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1433,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1412,
                            "src": "1087:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1434,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1414,
                            "src": "1090:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1435,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1416,
                            "src": "1093:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1432,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -16,
                          "src": "1080:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1080:15:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1067:28:4"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1438,
                          "name": "mm",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1431,
                          "src": "1109:2:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1439,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1422,
                          "src": "1114:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1109:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1445,
                      "nodeType": "IfStatement",
                      "src": "1105:18:4",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1441,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "1117:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1122:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1117:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1444,
                        "nodeType": "ExpressionStatement",
                        "src": "1117:6:4"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1446,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1422,
                          "src": "1133:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1447,
                          "name": "mm",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1431,
                          "src": "1138:2:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1133:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1449,
                      "nodeType": "ExpressionStatement",
                      "src": "1133:7:4"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1450,
                          "name": "h",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1424,
                          "src": "1155:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1160:1:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1155:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1457,
                      "nodeType": "IfStatement",
                      "src": "1151:24:4",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1453,
                            "name": "l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "1170:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1454,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1416,
                            "src": "1174:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1170:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1420,
                        "id": 1456,
                        "nodeType": "Return",
                        "src": "1163:12:4"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1459,
                              "name": "h",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "1194:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1460,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1416,
                              "src": "1198:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1194:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57",
                            "id": 1462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1201:28:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da",
                              "typeString": "literal_string \"FullMath: FULLDIV_OVERFLOW\""
                            },
                            "value": "FullMath: FULLDIV_OVERFLOW"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da",
                              "typeString": "literal_string \"FullMath: FULLDIV_OVERFLOW\""
                            }
                          ],
                          "id": 1458,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1186:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1186:44:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1464,
                      "nodeType": "ExpressionStatement",
                      "src": "1186:44:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1466,
                            "name": "l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "1255:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1467,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1424,
                            "src": "1258:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1468,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1416,
                            "src": "1261:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1465,
                          "name": "fullDiv",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1410,
                          "src": "1247:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1469,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1247:16:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1420,
                      "id": 1470,
                      "nodeType": "Return",
                      "src": "1240:23:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1472,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mulDiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1417,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1412,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1472,
                      "src": "922:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1411,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "922:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1414,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1472,
                      "src": "941:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1413,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "941:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1416,
                      "mutability": "mutable",
                      "name": "d",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1472,
                      "src": "960:9:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1415,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "960:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "912:63:4"
                },
                "returnParameters": {
                  "id": 1420,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1419,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1472,
                      "src": "999:7:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1418,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "999:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "998:9:4"
                },
                "scope": 1473,
                "src": "897:373:4",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1474,
            "src": "193:1079:4"
          }
        ],
        "src": "38:1235:4"
      }
    },
    "contracts/libraries/SafeERC20Namer.sol": {
      "id": 5,
      "AST": {
        "absolutePath": "contracts/libraries/SafeERC20Namer.sol",
        "exportedSymbols": {
          "SafeERC20Namer": [
            1788
          ]
        },
        "id": 1789,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1475,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:5"
          },
          {
            "absolutePath": "contracts/libraries/AddressStringUtil.sol",
            "file": "./AddressStringUtil.sol",
            "id": 1476,
            "nodeType": "ImportDirective",
            "scope": 1789,
            "sourceUnit": 143,
            "src": "72:33:5",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1788,
            "linearizedBaseContracts": [
              1788
            ],
            "name": "SafeERC20Namer",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1558,
                  "nodeType": "Block",
                  "src": "405:511:5",
                  "statements": [
                    {
                      "assignments": [
                        1484
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1484,
                          "mutability": "mutable",
                          "name": "bytesString",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1558,
                          "src": "415:24:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1483,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "415:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1489,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 1487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "452:2:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            }
                          ],
                          "id": 1486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "442:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 1485,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "446:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 1488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "442:13:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "415:40:5"
                    },
                    {
                      "assignments": [
                        1491
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1491,
                          "mutability": "mutable",
                          "name": "charCount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1558,
                          "src": "465:17:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1490,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "465:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1493,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "485:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "465:21:5"
                    },
                    {
                      "body": {
                        "id": 1524,
                        "nodeType": "Block",
                        "src": "529:162:5",
                        "statements": [
                          {
                            "assignments": [
                              1505
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1505,
                                "mutability": "mutable",
                                "name": "char",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1524,
                                "src": "543:11:5",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "typeName": {
                                  "id": 1504,
                                  "name": "bytes1",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "543:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1509,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1506,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1478,
                                "src": "557:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1508,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1507,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1495,
                                "src": "559:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "557:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "543:18:5"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              },
                              "id": 1512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1510,
                                "name": "char",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1505,
                                "src": "579:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "587:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "579:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 1523,
                            "nodeType": "IfStatement",
                            "src": "575:106:5",
                            "trueBody": {
                              "id": 1522,
                              "nodeType": "Block",
                              "src": "590:91:5",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1513,
                                        "name": "bytesString",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1484,
                                        "src": "608:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1515,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1514,
                                        "name": "charCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1491,
                                        "src": "620:9:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "608:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 1516,
                                      "name": "char",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1505,
                                      "src": "633:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "608:29:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "id": 1518,
                                  "nodeType": "ExpressionStatement",
                                  "src": "608:29:5"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "655:11:5",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 1519,
                                      "name": "charCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1491,
                                      "src": "655:9:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1521,
                                  "nodeType": "ExpressionStatement",
                                  "src": "655:11:5"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1498,
                          "name": "j",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1495,
                          "src": "516:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3332",
                          "id": 1499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "520:2:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "516:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1525,
                      "initializationExpression": {
                        "assignments": [
                          1495
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1495,
                            "mutability": "mutable",
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1525,
                            "src": "501:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1494,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "501:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1497,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "513:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "501:13:5"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "524:3:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1501,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1495,
                            "src": "524:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1503,
                        "nodeType": "ExpressionStatement",
                        "src": "524:3:5"
                      },
                      "nodeType": "ForStatement",
                      "src": "496:195:5"
                    },
                    {
                      "assignments": [
                        1527
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1527,
                          "mutability": "mutable",
                          "name": "bytesStringTrimmed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1558,
                          "src": "700:31:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1526,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "700:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1532,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1530,
                            "name": "charCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1491,
                            "src": "744:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "734:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 1528,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "738:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 1531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "734:20:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "700:54:5"
                    },
                    {
                      "body": {
                        "id": 1551,
                        "nodeType": "Block",
                        "src": "804:63:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1543,
                                  "name": "bytesStringTrimmed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1527,
                                  "src": "818:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1545,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1544,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1534,
                                  "src": "837:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "818:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1546,
                                  "name": "bytesString",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1484,
                                  "src": "842:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1548,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1547,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1534,
                                  "src": "854:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "842:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "818:38:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 1550,
                            "nodeType": "ExpressionStatement",
                            "src": "818:38:5"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1537,
                          "name": "j",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1534,
                          "src": "784:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1538,
                          "name": "charCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "788:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "784:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1552,
                      "initializationExpression": {
                        "assignments": [
                          1534
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1534,
                            "mutability": "mutable",
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1552,
                            "src": "769:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1533,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "769:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1536,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "781:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "769:13:5"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "799:3:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1540,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1534,
                            "src": "799:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1542,
                        "nodeType": "ExpressionStatement",
                        "src": "799:3:5"
                      },
                      "nodeType": "ForStatement",
                      "src": "764:103:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1555,
                            "name": "bytesStringTrimmed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1527,
                            "src": "890:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "883:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 1553,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "883:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 1556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "883:26:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1482,
                      "id": 1557,
                      "nodeType": "Return",
                      "src": "876:33:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1559,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "bytes32ToString",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1479,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1478,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1559,
                      "src": "357:9:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1477,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "357:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "356:11:5"
                },
                "returnParameters": {
                  "id": 1482,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1481,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1559,
                      "src": "390:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1480,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "390:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "389:15:5"
                },
                "scope": 1788,
                "src": "332:584:5",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1629,
                  "nodeType": "Block",
                  "src": "1041:428:5",
                  "statements": [
                    {
                      "assignments": [
                        1567
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1567,
                          "mutability": "mutable",
                          "name": "charCount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1629,
                          "src": "1051:17:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1566,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1051:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1569,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1071:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1051:21:5"
                    },
                    {
                      "body": {
                        "id": 1593,
                        "nodeType": "Block",
                        "src": "1169:78:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1580,
                                "name": "charCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1567,
                                "src": "1183:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 1581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1197:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1183:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1583,
                            "nodeType": "ExpressionStatement",
                            "src": "1183:15:5"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1584,
                                "name": "charCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1567,
                                "src": "1212:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1587,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1561,
                                      "src": "1231:1:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 1589,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1588,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1571,
                                      "src": "1233:1:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1231:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 1586,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1225:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 1585,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1225:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1225:11:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "1212:24:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1592,
                            "nodeType": "ExpressionStatement",
                            "src": "1212:24:5"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1574,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1571,
                          "src": "1156:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3634",
                          "id": 1575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1160:2:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "1156:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1594,
                      "initializationExpression": {
                        "assignments": [
                          1571
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1571,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1594,
                            "src": "1140:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1570,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1140:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1573,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "3332",
                          "id": 1572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1152:2:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1140:14:5"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "1164:3:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1577,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1571,
                            "src": "1164:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1579,
                        "nodeType": "ExpressionStatement",
                        "src": "1164:3:5"
                      },
                      "nodeType": "ForStatement",
                      "src": "1135:112:5"
                    },
                    {
                      "assignments": [
                        1596
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1596,
                          "mutability": "mutable",
                          "name": "bytesStringTrimmed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1629,
                          "src": "1257:31:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1595,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1257:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1601,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1599,
                            "name": "charCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1567,
                            "src": "1301:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "1291:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (bytes memory)"
                          },
                          "typeName": {
                            "id": 1597,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1295:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          }
                        },
                        "id": 1600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1291:20:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1257:54:5"
                    },
                    {
                      "body": {
                        "id": 1622,
                        "nodeType": "Block",
                        "src": "1361:58:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1612,
                                  "name": "bytesStringTrimmed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1596,
                                  "src": "1375:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1614,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1613,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1603,
                                  "src": "1394:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "1375:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1615,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1561,
                                  "src": "1399:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1619,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1616,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1603,
                                    "src": "1401:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3634",
                                    "id": 1617,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1405:2:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  "src": "1401:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1399:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "1375:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 1621,
                            "nodeType": "ExpressionStatement",
                            "src": "1375:33:5"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1606,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1603,
                          "src": "1341:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1607,
                          "name": "charCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1567,
                          "src": "1345:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1341:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1623,
                      "initializationExpression": {
                        "assignments": [
                          1603
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1603,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1623,
                            "src": "1326:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1602,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1326:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1605,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1338:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1326:13:5"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "1356:3:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1609,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1603,
                            "src": "1356:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1611,
                        "nodeType": "ExpressionStatement",
                        "src": "1356:3:5"
                      },
                      "nodeType": "ForStatement",
                      "src": "1321:98:5"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1626,
                            "name": "bytesStringTrimmed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1596,
                            "src": "1443:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1436:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 1624,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1436:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 1627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1436:26:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1565,
                      "id": 1628,
                      "nodeType": "Return",
                      "src": "1429:33:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1630,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "parseStringData",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1562,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1561,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1630,
                      "src": "988:14:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1560,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "988:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "987:16:5"
                },
                "returnParameters": {
                  "id": 1565,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1564,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1630,
                      "src": "1026:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1563,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1026:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1025:15:5"
                },
                "scope": 1788,
                "src": "963:506:5",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1643,
                  "nodeType": "Block",
                  "src": "1693:66:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1639,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1632,
                            "src": "1742:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "3430",
                            "id": 1640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1749:2:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_40_by_1",
                              "typeString": "int_const 40"
                            },
                            "value": "40"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_40_by_1",
                              "typeString": "int_const 40"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1637,
                            "name": "AddressStringUtil",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 142,
                            "src": "1710:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_AddressStringUtil_$142_$",
                              "typeString": "type(library AddressStringUtil)"
                            }
                          },
                          "id": 1638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toAsciiString",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 113,
                          "src": "1710:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address,uint256) pure returns (string memory)"
                          }
                        },
                        "id": 1641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1710:42:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1636,
                      "id": 1642,
                      "nodeType": "Return",
                      "src": "1703:49:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1644,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addressToName",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1633,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1632,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1644,
                      "src": "1641:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1631,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1641:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1640:15:5"
                },
                "returnParameters": {
                  "id": 1636,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1635,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1644,
                      "src": "1678:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1634,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1678:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1677:15:5"
                },
                "scope": 1788,
                "src": "1618:141:5",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1657,
                  "nodeType": "Block",
                  "src": "1990:65:5",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1653,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1646,
                            "src": "2039:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 1654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2046:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1651,
                            "name": "AddressStringUtil",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 142,
                            "src": "2007:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_AddressStringUtil_$142_$",
                              "typeString": "type(library AddressStringUtil)"
                            }
                          },
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toAsciiString",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 113,
                          "src": "2007:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address,uint256) pure returns (string memory)"
                          }
                        },
                        "id": 1655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2007:41:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1650,
                      "id": 1656,
                      "nodeType": "Return",
                      "src": "2000:48:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1658,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addressToSymbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1647,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1646,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1658,
                      "src": "1938:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1645,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1938:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1937:15:5"
                },
                "returnParameters": {
                  "id": 1650,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1649,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1658,
                      "src": "1975:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1648,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1975:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1974:15:5"
                },
                "scope": 1788,
                "src": "1913:142:5",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1726,
                  "nodeType": "Block",
                  "src": "2283:551:5",
                  "statements": [
                    {
                      "assignments": [
                        1668,
                        1670
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1668,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1726,
                          "src": "2294:12:5",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1667,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2294:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1670,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1726,
                          "src": "2308:17:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1669,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2308:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1678,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1675,
                                "name": "selector",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1662,
                                "src": "2369:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1673,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2346:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2346:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2346:32:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1671,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1660,
                            "src": "2329:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "staticcall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2329:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                          }
                        },
                        "id": 1677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2329:50:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2293:86:5"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2467:8:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1679,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1668,
                            "src": "2468:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1681,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1670,
                              "src": "2479:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2479:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2494:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2479:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2467:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1689,
                      "nodeType": "IfStatement",
                      "src": "2463:68:5",
                      "trueBody": {
                        "id": 1688,
                        "nodeType": "Block",
                        "src": "2497:34:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 1686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2518:2:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            "functionReturnParameters": 1666,
                            "id": 1687,
                            "nodeType": "Return",
                            "src": "2511:9:5"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1690,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1670,
                            "src": "2589:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 1691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2589:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3332",
                          "id": 1692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2604:2:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "2589:17:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1709,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1670,
                              "src": "2733:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2733:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3634",
                            "id": 1711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2747:2:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "2733:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1722,
                        "nodeType": "IfStatement",
                        "src": "2729:80:5",
                        "trueBody": {
                          "id": 1721,
                          "nodeType": "Block",
                          "src": "2751:58:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1715,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1670,
                                    "src": "2783:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1717,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2790:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                          "typeString": "type(string storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 1716,
                                          "name": "string",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2790:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      }
                                    ],
                                    "id": 1718,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2789:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1713,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2772:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "decode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2772:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 1719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2772:26:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 1666,
                              "id": 1720,
                              "nodeType": "Return",
                              "src": "2765:33:5"
                            }
                          ]
                        }
                      },
                      "id": 1723,
                      "nodeType": "IfStatement",
                      "src": "2585:224:5",
                      "trueBody": {
                        "id": 1708,
                        "nodeType": "Block",
                        "src": "2608:115:5",
                        "statements": [
                          {
                            "assignments": [
                              1695
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1695,
                                "mutability": "mutable",
                                "name": "decoded",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1708,
                                "src": "2622:15:5",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 1694,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2622:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1703,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1698,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1670,
                                  "src": "2651:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1700,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2658:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 1699,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2658:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    }
                                  ],
                                  "id": 1701,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2657:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1696,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2640:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2640:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 1702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2640:27:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2622:45:5"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1705,
                                  "name": "decoded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1695,
                                  "src": "2704:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1704,
                                "name": "bytes32ToString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1559,
                                "src": "2688:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (bytes32) pure returns (string memory)"
                                }
                              },
                              "id": 1706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2688:24:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 1666,
                            "id": 1707,
                            "nodeType": "Return",
                            "src": "2681:31:5"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 1724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2825:2:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      "functionReturnParameters": 1666,
                      "id": 1725,
                      "nodeType": "Return",
                      "src": "2818:9:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1727,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "callAndParseStringReturn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1660,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1727,
                      "src": "2214:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1659,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2214:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1662,
                      "mutability": "mutable",
                      "name": "selector",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1727,
                      "src": "2229:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 1661,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "2229:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2213:32:5"
                },
                "returnParameters": {
                  "id": 1666,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1665,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1727,
                      "src": "2268:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1664,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2268:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2267:15:5"
                },
                "scope": 1788,
                "src": "2180:654:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1756,
                  "nodeType": "Block",
                  "src": "3034:308:5",
                  "statements": [
                    {
                      "assignments": [
                        1735
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1735,
                          "mutability": "mutable",
                          "name": "symbol",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1756,
                          "src": "3098:20:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string"
                          },
                          "typeName": {
                            "id": 1734,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "3098:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1740,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1737,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1729,
                            "src": "3146:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30783935643839623431",
                            "id": 1738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3153:10:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2514000705_by_1",
                              "typeString": "int_const 2514000705"
                            },
                            "value": "0x95d89b41"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_2514000705_by_1",
                              "typeString": "int_const 2514000705"
                            }
                          ],
                          "id": 1736,
                          "name": "callAndParseStringReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1727,
                          "src": "3121:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address,bytes4) view returns (string memory)"
                          }
                        },
                        "id": 1739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3121:43:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3098:66:5"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1743,
                                "name": "symbol",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1735,
                                "src": "3184:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 1742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3178:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 1741,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3178:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3178:13:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 1745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3178:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3202:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3178:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1753,
                      "nodeType": "IfStatement",
                      "src": "3174:139:5",
                      "trueBody": {
                        "id": 1752,
                        "nodeType": "Block",
                        "src": "3205:108:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1749,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1729,
                                  "src": "3296:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1748,
                                "name": "addressToSymbol",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1658,
                                "src": "3280:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (address) pure returns (string memory)"
                                }
                              },
                              "id": 1750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3280:22:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 1733,
                            "id": 1751,
                            "nodeType": "Return",
                            "src": "3273:29:5"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1754,
                        "name": "symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1735,
                        "src": "3329:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1733,
                      "id": 1755,
                      "nodeType": "Return",
                      "src": "3322:13:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1757,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tokenSymbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1730,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1729,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1757,
                      "src": "2981:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1728,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2981:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2980:15:5"
                },
                "returnParameters": {
                  "id": 1733,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1732,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1757,
                      "src": "3019:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1731,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3019:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3018:15:5"
                },
                "scope": 1788,
                "src": "2960:382:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1786,
                  "nodeType": "Block",
                  "src": "3534:291:5",
                  "statements": [
                    {
                      "assignments": [
                        1765
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1765,
                          "mutability": "mutable",
                          "name": "name",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1786,
                          "src": "3596:18:5",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string"
                          },
                          "typeName": {
                            "id": 1764,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "3596:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1770,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1767,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1759,
                            "src": "3642:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30783036666464653033",
                            "id": 1768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3649:10:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_117300739_by_1",
                              "typeString": "int_const 117300739"
                            },
                            "value": "0x06fdde03"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_117300739_by_1",
                              "typeString": "int_const 117300739"
                            }
                          ],
                          "id": 1766,
                          "name": "callAndParseStringReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1727,
                          "src": "3617:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address,bytes4) view returns (string memory)"
                          }
                        },
                        "id": 1769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3617:43:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3596:64:5"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1773,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1765,
                                "src": "3680:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 1772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3674:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 1771,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "3674:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3674:11:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 1775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3674:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3696:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3674:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1783,
                      "nodeType": "IfStatement",
                      "src": "3670:128:5",
                      "trueBody": {
                        "id": 1782,
                        "nodeType": "Block",
                        "src": "3699:99:5",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1779,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1759,
                                  "src": "3781:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1778,
                                "name": "addressToName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1644,
                                "src": "3767:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (address) pure returns (string memory)"
                                }
                              },
                              "id": 1780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3767:20:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 1763,
                            "id": 1781,
                            "nodeType": "Return",
                            "src": "3760:27:5"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1784,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1765,
                        "src": "3814:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1763,
                      "id": 1785,
                      "nodeType": "Return",
                      "src": "3807:11:5"
                    }
                  ]
                },
                "documentation": null,
                "id": 1787,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tokenName",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1760,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1759,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1787,
                      "src": "3481:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1758,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3481:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3480:15:5"
                },
                "returnParameters": {
                  "id": 1763,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1762,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1787,
                      "src": "3519:13:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1761,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3519:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3518:15:5"
                },
                "scope": 1788,
                "src": "3462:363:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1789,
            "src": "303:3524:5"
          }
        ],
        "src": "46:3782:5"
      }
    },
    "contracts/libraries/TransferHelper.sol": {
      "id": 6,
      "AST": {
        "absolutePath": "contracts/libraries/TransferHelper.sol",
        "exportedSymbols": {
          "TransferHelper": [
            1948
          ]
        },
        "id": 1949,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1790,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:6"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1948,
            "linearizedBaseContracts": [
              1948
            ],
            "name": "TransferHelper",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1832,
                  "nodeType": "Block",
                  "src": "314:332:6",
                  "statements": [
                    {
                      "assignments": [
                        1800,
                        1802
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1800,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1832,
                          "src": "390:12:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1799,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "390:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1802,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1832,
                          "src": "404:17:6",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1801,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "404:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1812,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30783039356561376233",
                                "id": 1807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "459:10:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                "value": "0x095ea7b3"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1808,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1794,
                                "src": "471:2:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1809,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1796,
                                "src": "475:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1805,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "436:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "436:22:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "436:45:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1803,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1792,
                            "src": "425:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "425:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1811,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "425:57:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "389:93:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1814,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1800,
                              "src": "513:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1818,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1815,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1802,
                                        "src": "525:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1816,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "525:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "540:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "525:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1821,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1802,
                                        "src": "556:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1823,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "563:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1822,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "563:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1824,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "562:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1819,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "545:3:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1820,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "545:10:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "545:24:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "525:44:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1827,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "524:46:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "513:57:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c6564",
                            "id": 1829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "584:45:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b4dd1eb4be82119fd3a99acfb5dd4c57591eb0ea309359b1af3d65a4460c7123",
                              "typeString": "literal_string \"TransferHelper::safeApprove: approve failed\""
                            },
                            "value": "TransferHelper::safeApprove: approve failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b4dd1eb4be82119fd3a99acfb5dd4c57591eb0ea309359b1af3d65a4460c7123",
                              "typeString": "literal_string \"TransferHelper::safeApprove: approve failed\""
                            }
                          ],
                          "id": 1813,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "492:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "492:147:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1831,
                      "nodeType": "ExpressionStatement",
                      "src": "492:147:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 1833,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeApprove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1797,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1792,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1833,
                      "src": "242:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1791,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "242:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1794,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1833,
                      "src": "265:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1793,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "265:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1796,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1833,
                      "src": "285:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1795,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "285:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:72:6"
                },
                "returnParameters": {
                  "id": 1798,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "314:0:6"
                },
                "scope": 1948,
                "src": "212:434:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1875,
                  "nodeType": "Block",
                  "src": "755:335:6",
                  "statements": [
                    {
                      "assignments": [
                        1843,
                        1845
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1843,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1875,
                          "src": "832:12:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1842,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "832:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1845,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1875,
                          "src": "846:17:6",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1844,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "846:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1855,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30786139303539636262",
                                "id": 1850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "901:10:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                "value": "0xa9059cbb"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1851,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1837,
                                "src": "913:2:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1852,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1839,
                                "src": "917:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1848,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "878:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "878:22:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "878:45:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1846,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1835,
                            "src": "867:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "867:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "867:57:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "831:93:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1857,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1843,
                              "src": "955:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1869,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1861,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1858,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1845,
                                        "src": "967:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1859,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "967:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1860,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "982:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "967:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1864,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1845,
                                        "src": "998:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1866,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1005:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1865,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1005:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1867,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1004:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1862,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "987:3:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1863,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "987:10:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "987:24:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "967:44:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1870,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "966:46:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "955:57:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564",
                            "id": 1872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1026:47:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_daea69421eeb1164e163c36f3d4349f0db3ec4e0d1381bd5bf4faf53496c2611",
                              "typeString": "literal_string \"TransferHelper::safeTransfer: transfer failed\""
                            },
                            "value": "TransferHelper::safeTransfer: transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_daea69421eeb1164e163c36f3d4349f0db3ec4e0d1381bd5bf4faf53496c2611",
                              "typeString": "literal_string \"TransferHelper::safeTransfer: transfer failed\""
                            }
                          ],
                          "id": 1856,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "934:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "934:149:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1874,
                      "nodeType": "ExpressionStatement",
                      "src": "934:149:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 1876,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1840,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1835,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1876,
                      "src": "683:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1834,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "683:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1837,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1876,
                      "src": "706:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1836,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "706:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1839,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1876,
                      "src": "726:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1838,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "726:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "673:72:6"
                },
                "returnParameters": {
                  "id": 1841,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "755:0:6"
                },
                "scope": 1948,
                "src": "652:438:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1921,
                  "nodeType": "Block",
                  "src": "1225:357:6",
                  "statements": [
                    {
                      "assignments": [
                        1888,
                        1890
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1888,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1921,
                          "src": "1314:12:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1887,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1314:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1890,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1921,
                          "src": "1328:17:6",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1889,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1328:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1901,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30783233623837326464",
                                "id": 1895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1383:10:6",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                "value": "0x23b872dd"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1896,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1880,
                                "src": "1395:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1897,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1882,
                                "src": "1401:2:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1898,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1884,
                                "src": "1405:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1893,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1360:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1360:22:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1360:51:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1891,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1878,
                            "src": "1349:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1349:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1900,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1349:63:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1313:99:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1917,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1903,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1888,
                              "src": "1443:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1904,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1890,
                                        "src": "1455:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1905,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1455:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1906,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1470:1:6",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1455:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1910,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1890,
                                        "src": "1486:4:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1912,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1493:4:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1911,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1493:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1913,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1492:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1908,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "1475:3:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1475:10:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1914,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1475:24:6",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1455:44:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1916,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1454:46:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1443:57:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c6564",
                            "id": 1918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1514:51:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f8faf98afe9344b6d4b0e75b0101259bf282914b3b5a9320c6918b6e27ede1c",
                              "typeString": "literal_string \"TransferHelper::transferFrom: transferFrom failed\""
                            },
                            "value": "TransferHelper::transferFrom: transferFrom failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3f8faf98afe9344b6d4b0e75b0101259bf282914b3b5a9320c6918b6e27ede1c",
                              "typeString": "literal_string \"TransferHelper::transferFrom: transferFrom failed\""
                            }
                          ],
                          "id": 1902,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1422:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1422:153:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1920,
                      "nodeType": "ExpressionStatement",
                      "src": "1422:153:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 1922,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1885,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1878,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1922,
                      "src": "1131:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1877,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1131:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1880,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1922,
                      "src": "1154:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1879,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1154:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1882,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1922,
                      "src": "1176:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1881,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1176:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1884,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1922,
                      "src": "1196:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1883,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1196:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1121:94:6"
                },
                "returnParameters": {
                  "id": 1886,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1225:0:6"
                },
                "scope": 1948,
                "src": "1096:486:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1946,
                  "nodeType": "Block",
                  "src": "1649:153:6",
                  "statements": [
                    {
                      "assignments": [
                        1930,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1930,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1946,
                          "src": "1660:12:6",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1929,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1660:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 1940,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1710:1:6",
                                "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"
                                }
                              ],
                              "id": 1936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1700:9:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 1935,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1704:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 1938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1700:12:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1931,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1924,
                              "src": "1678:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1678:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 1933,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "1693:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "1678:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1678:35:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1659:54:6"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1942,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1930,
                            "src": "1731:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564",
                            "id": 1943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1740:54:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_43d7bec223ecf9eb06ea147e7d564bc71c2448662d62a4ea86ce71fc4518b350",
                              "typeString": "literal_string \"TransferHelper::safeTransferETH: ETH transfer failed\""
                            },
                            "value": "TransferHelper::safeTransferETH: ETH transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_43d7bec223ecf9eb06ea147e7d564bc71c2448662d62a4ea86ce71fc4518b350",
                              "typeString": "literal_string \"TransferHelper::safeTransferETH: ETH transfer failed\""
                            }
                          ],
                          "id": 1941,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1723:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1723:72:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1945,
                      "nodeType": "ExpressionStatement",
                      "src": "1723:72:6"
                    }
                  ]
                },
                "documentation": null,
                "id": 1947,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1927,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1924,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1947,
                      "src": "1613:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1923,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1613:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1926,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1947,
                      "src": "1625:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1925,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1625:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1612:27:6"
                },
                "returnParameters": {
                  "id": 1928,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1649:0:6"
                },
                "scope": 1948,
                "src": "1588:214:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1949,
            "src": "183:1621:6"
          }
        ],
        "src": "46:1759:6"
      }
    },
    "contracts/test/AddressStringUtilTest.sol": {
      "id": 7,
      "AST": {
        "absolutePath": "contracts/test/AddressStringUtilTest.sol",
        "exportedSymbols": {
          "AddressStringUtilTest": [
            1968
          ]
        },
        "id": 1969,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1950,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:7"
          },
          {
            "absolutePath": "contracts/libraries/AddressStringUtil.sol",
            "file": "../libraries/AddressStringUtil.sol",
            "id": 1951,
            "nodeType": "ImportDirective",
            "scope": 1969,
            "sourceUnit": 143,
            "src": "72:44:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1968,
            "linearizedBaseContracts": [
              1968
            ],
            "name": "AddressStringUtilTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1966,
                  "nodeType": "Block",
                  "src": "243:66:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1962,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1953,
                            "src": "292:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1963,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1955,
                            "src": "298:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1960,
                            "name": "AddressStringUtil",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 142,
                            "src": "260:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_AddressStringUtil_$142_$",
                              "typeString": "type(library AddressStringUtil)"
                            }
                          },
                          "id": 1961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toAsciiString",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 113,
                          "src": "260:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address,uint256) pure returns (string memory)"
                          }
                        },
                        "id": 1964,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "260:42:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 1959,
                      "id": 1965,
                      "nodeType": "Return",
                      "src": "253:49:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5768786e",
                "id": 1967,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "toAsciiString",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1956,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1953,
                      "mutability": "mutable",
                      "name": "addr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1967,
                      "src": "178:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1952,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "178:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1955,
                      "mutability": "mutable",
                      "name": "len",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1967,
                      "src": "192:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1954,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "192:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "177:27:7"
                },
                "returnParameters": {
                  "id": 1959,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1958,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1967,
                      "src": "228:13:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1957,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "228:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "227:15:7"
                },
                "scope": 1968,
                "src": "155:154:7",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 1969,
            "src": "118:193:7"
          }
        ],
        "src": "46:266:7"
      }
    },
    "contracts/test/BabylonianEchidnaTest.sol": {
      "id": 8,
      "AST": {
        "absolutePath": "contracts/test/BabylonianEchidnaTest.sol",
        "exportedSymbols": {
          "BabylonianEchidnaTest": [
            2047
          ]
        },
        "id": 2048,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1970,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:8"
          },
          {
            "absolutePath": "contracts/libraries/Babylonian.sol",
            "file": "../libraries/Babylonian.sol",
            "id": 1971,
            "nodeType": "ImportDirective",
            "scope": 2048,
            "sourceUnit": 346,
            "src": "72:37:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2047,
            "linearizedBaseContracts": [
              2047
            ],
            "name": "BabylonianEchidnaTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2018,
                  "nodeType": "Block",
                  "src": "194:254:8",
                  "statements": [
                    {
                      "assignments": [
                        1977
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1977,
                          "mutability": "mutable",
                          "name": "sqrt",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2018,
                          "src": "204:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1976,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "204:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1982,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1980,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1973,
                            "src": "235:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1978,
                            "name": "Babylonian",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 345,
                            "src": "219:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Babylonian_$345_$",
                              "typeString": "type(library Babylonian)"
                            }
                          },
                          "id": 1979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 344,
                          "src": "219:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "219:22:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "204:37:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1984,
                              "name": "sqrt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1977,
                              "src": "259:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                "typeString": "int_const 3402...(31 digits omitted)...1456"
                              },
                              "id": 1987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "266:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 1986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "269:3:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "266:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                "typeString": "int_const 3402...(31 digits omitted)...1456"
                              }
                            },
                            "src": "259:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 1983,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "252:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 1989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "252:21:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1990,
                      "nodeType": "ExpressionStatement",
                      "src": "252:21:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1992,
                                "name": "sqrt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1977,
                                "src": "362:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "368:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "362:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1995,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1973,
                              "src": "373:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "362:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 1991,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "355:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 1997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "355:24:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1998,
                      "nodeType": "ExpressionStatement",
                      "src": "355:24:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2002,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2000,
                                        "name": "sqrt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1977,
                                        "src": "397:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2001,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "404:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "397:8:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 2003,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "396:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 2004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "408:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "396:13:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2006,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1973,
                                "src": "412:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "396:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2008,
                                "name": "sqrt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1977,
                                "src": "421:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2012,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "437:2:8",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2011,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "438:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 2010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "429:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 2009,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "429:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "429:11:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "421:19:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "396:44:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 1999,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "389:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "389:52:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2017,
                      "nodeType": "ExpressionStatement",
                      "src": "389:52:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "922ab1e2",
                "id": 2019,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "checkSqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1974,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1973,
                      "mutability": "mutable",
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2019,
                      "src": "167:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1972,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "167:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "166:15:8"
                },
                "returnParameters": {
                  "id": 1975,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "194:0:8"
                },
                "scope": 2047,
                "src": "148:300:8",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2045,
                  "nodeType": "Block",
                  "src": "507:80:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 2027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2025,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2021,
                                "src": "527:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "323535",
                                "id": 2026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "536:3:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "255"
                              },
                              "src": "527:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "564:1:8",
                                    "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": 2034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "556:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 2033,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "556:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "556:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 2039,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2037,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2021,
                                      "src": "569:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2038,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "577:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "569:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "id": 2040,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "568:11:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "556:23:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "527:52:8",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2031,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "550:2:8",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "551:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 2029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "542:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 2028,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "542:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "542:11:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2024,
                          "name": "checkSqrt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2019,
                          "src": "517:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) pure"
                          }
                        },
                        "id": 2043,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "517:63:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2044,
                      "nodeType": "ExpressionStatement",
                      "src": "517:63:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e4134de5",
                "id": 2046,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "checkMaxForIndex",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2022,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2021,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2046,
                      "src": "480:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2020,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "480:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "479:13:8"
                },
                "returnParameters": {
                  "id": 2023,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "507:0:8"
                },
                "scope": 2047,
                "src": "454:133:8",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2048,
            "src": "111:478:8"
          }
        ],
        "src": "46:544:8"
      }
    },
    "contracts/test/BabylonianTest.sol": {
      "id": 9,
      "AST": {
        "absolutePath": "contracts/test/BabylonianTest.sol",
        "exportedSymbols": {
          "BabylonianTest": [
            2088
          ]
        },
        "id": 2089,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2049,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:9"
          },
          {
            "absolutePath": "contracts/libraries/Babylonian.sol",
            "file": "../libraries/Babylonian.sol",
            "id": 2050,
            "nodeType": "ImportDirective",
            "scope": 2089,
            "sourceUnit": 346,
            "src": "72:37:9",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2088,
            "linearizedBaseContracts": [
              2088
            ],
            "name": "BabylonianTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2062,
                  "nodeType": "Block",
                  "src": "200:44:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2059,
                            "name": "num",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2052,
                            "src": "233:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2057,
                            "name": "Babylonian",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 345,
                            "src": "217:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Babylonian_$345_$",
                              "typeString": "type(library Babylonian)"
                            }
                          },
                          "id": 2058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 344,
                          "src": "217:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "217:20:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2056,
                      "id": 2061,
                      "nodeType": "Return",
                      "src": "210:27:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "677342ce",
                "id": 2063,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2053,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2052,
                      "mutability": "mutable",
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2063,
                      "src": "155:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2051,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "155:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "154:13:9"
                },
                "returnParameters": {
                  "id": 2056,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2055,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2063,
                      "src": "191:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2054,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "191:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "190:9:9"
                },
                "scope": 2088,
                "src": "141:103:9",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2086,
                  "nodeType": "Block",
                  "src": "321:114:9",
                  "statements": [
                    {
                      "assignments": [
                        2071
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2071,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2086,
                          "src": "331:17:9",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2070,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "331:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2074,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2072,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "351:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "351:9:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "331:29:9"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2078,
                            "name": "num",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2065,
                            "src": "386:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2075,
                            "name": "Babylonian",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 345,
                            "src": "370:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Babylonian_$345_$",
                              "typeString": "type(library Babylonian)"
                            }
                          },
                          "id": 2077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 344,
                          "src": "370:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "370:20:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2080,
                      "nodeType": "ExpressionStatement",
                      "src": "370:20:9"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2081,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2071,
                          "src": "407:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2082,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "419:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "419:9:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "407:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2069,
                      "id": 2085,
                      "nodeType": "Return",
                      "src": "400:28:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "821f4924",
                "id": 2087,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfSqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2066,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2065,
                      "mutability": "mutable",
                      "name": "num",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2087,
                      "src": "276:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2064,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "276:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "275:13:9"
                },
                "returnParameters": {
                  "id": 2069,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2068,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2087,
                      "src": "312:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2067,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "312:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "311:9:9"
                },
                "scope": 2088,
                "src": "250:185:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2089,
            "src": "111:326:9"
          }
        ],
        "src": "46:392:9"
      }
    },
    "contracts/test/BitMathEchidnaTest.sol": {
      "id": 10,
      "AST": {
        "absolutePath": "contracts/test/BitMathEchidnaTest.sol",
        "exportedSymbols": {
          "BitMathEchidnaTest": [
            2178
          ]
        },
        "id": 2179,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2090,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "45:24:10"
          },
          {
            "absolutePath": "contracts/libraries/BitMath.sol",
            "file": "../libraries/BitMath.sol",
            "id": 2091,
            "nodeType": "ImportDirective",
            "scope": 2179,
            "sourceUnit": 624,
            "src": "71:34:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2178,
            "linearizedBaseContracts": [
              2178
            ],
            "name": "BitMathEchidnaTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2133,
                  "nodeType": "Block",
                  "src": "207:167:10",
                  "statements": [
                    {
                      "assignments": [
                        2097
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2097,
                          "mutability": "mutable",
                          "name": "msb",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2133,
                          "src": "217:9:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 2096,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "217:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2102,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2100,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2093,
                            "src": "256:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2098,
                            "name": "BitMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "229:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                              "typeString": "type(library BitMath)"
                            }
                          },
                          "id": 2099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mostSignificantBit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 461,
                          "src": "229:26:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) pure returns (uint8)"
                          }
                        },
                        "id": 2101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "229:33:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "217:45:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2104,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2093,
                              "src": "279:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2107,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "297:1:10",
                                        "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": 2106,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "289:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 2105,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "289:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "289:10:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2109,
                                    "name": "msb",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2097,
                                    "src": "301:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "289:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2111,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "288:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "279:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2103,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "272:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "272:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2114,
                      "nodeType": "ExpressionStatement",
                      "src": "272:34:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 2118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2116,
                                "name": "msb",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2097,
                                "src": "323:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "323535",
                                "id": 2117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "330:3:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "255"
                              },
                              "src": "323:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2119,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2093,
                                "src": "337:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 2122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "353:1:10",
                                      "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": 2121,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "345:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2120,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "345:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2123,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "345:10:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 2126,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2124,
                                        "name": "msb",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2097,
                                        "src": "358:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "364:1:10",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "358:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "id": 2127,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "357:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "345:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "337:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "323:43:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2115,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "316:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "316:51:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2132,
                      "nodeType": "ExpressionStatement",
                      "src": "316:51:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f94ac90e",
                "id": 2134,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mostSignificantBitInvariant",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2094,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2093,
                      "mutability": "mutable",
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2134,
                      "src": "178:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2092,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "178:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "177:15:10"
                },
                "returnParameters": {
                  "id": 2095,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "207:0:10"
                },
                "scope": 2178,
                "src": "141:233:10",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2176,
                  "nodeType": "Block",
                  "src": "447:163:10",
                  "statements": [
                    {
                      "assignments": [
                        2140
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2140,
                          "mutability": "mutable",
                          "name": "lsb",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2176,
                          "src": "457:9:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 2139,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "457:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2145,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2143,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2136,
                            "src": "497:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2141,
                            "name": "BitMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "469:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                              "typeString": "type(library BitMath)"
                            }
                          },
                          "id": 2142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "leastSignificantBit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 622,
                          "src": "469:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) pure returns (uint8)"
                          }
                        },
                        "id": 2144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "469:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "457:46:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2147,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2136,
                                "src": "520:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2153,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 2150,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "537:1:10",
                                          "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": 2149,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "529:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2148,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "529:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 2151,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "529:10:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2152,
                                      "name": "lsb",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2140,
                                      "src": "541:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "529:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2154,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "528:17:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "520:25:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "549:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "520:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2146,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "513:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "513:38:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2159,
                      "nodeType": "ExpressionStatement",
                      "src": "513:38:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2161,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2136,
                                "src": "568:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2167,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "32",
                                            "id": 2164,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "585:1:10",
                                            "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": 2163,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "577:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 2162,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "577:7:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 2165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "577:10:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2166,
                                        "name": "lsb",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2140,
                                        "src": "589:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "577:15:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2168,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "595:1:10",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "577:19:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2170,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "576:21:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "568:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "601:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "568:34:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2160,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "561:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "561:42:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2175,
                      "nodeType": "ExpressionStatement",
                      "src": "561:42:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2d711e0c",
                "id": 2177,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "leastSignificantBitInvariant",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2137,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2136,
                      "mutability": "mutable",
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2177,
                      "src": "418:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2135,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "418:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "417:15:10"
                },
                "returnParameters": {
                  "id": 2138,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "447:0:10"
                },
                "scope": 2178,
                "src": "380:230:10",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2179,
            "src": "107:505:10"
          }
        ],
        "src": "45:568:10"
      }
    },
    "contracts/test/BitMathTest.sol": {
      "id": 11,
      "AST": {
        "absolutePath": "contracts/test/BitMathTest.sol",
        "exportedSymbols": {
          "BitMathTest": [
            2256
          ]
        },
        "id": 2257,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2180,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "45:24:11"
          },
          {
            "absolutePath": "contracts/libraries/BitMath.sol",
            "file": "../libraries/BitMath.sol",
            "id": 2181,
            "nodeType": "ImportDirective",
            "scope": 2257,
            "sourceUnit": 624,
            "src": "71:34:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2256,
            "linearizedBaseContracts": [
              2256
            ],
            "name": "BitMathTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2193,
                  "nodeType": "Block",
                  "src": "205:53:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2190,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2183,
                            "src": "249:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2188,
                            "name": "BitMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "222:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                              "typeString": "type(library BitMath)"
                            }
                          },
                          "id": 2189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mostSignificantBit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 461,
                          "src": "222:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) pure returns (uint8)"
                          }
                        },
                        "id": 2191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "222:29:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "functionReturnParameters": 2187,
                      "id": 2192,
                      "nodeType": "Return",
                      "src": "215:36:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e6bcbc65",
                "id": 2194,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mostSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2184,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2183,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2194,
                      "src": "162:9:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2182,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "162:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "161:11:11"
                },
                "returnParameters": {
                  "id": 2187,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2186,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2194,
                      "src": "196:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2185,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "196:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "195:9:11"
                },
                "scope": 2256,
                "src": "134:124:11",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2217,
                  "nodeType": "Block",
                  "src": "347:123:11",
                  "statements": [
                    {
                      "assignments": [
                        2202
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2202,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2217,
                          "src": "357:17:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2201,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "357:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2205,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2203,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "377:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "377:9:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "357:29:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2209,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "423:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2206,
                            "name": "BitMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "396:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                              "typeString": "type(library BitMath)"
                            }
                          },
                          "id": 2208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mostSignificantBit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 461,
                          "src": "396:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) pure returns (uint8)"
                          }
                        },
                        "id": 2210,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "396:29:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 2211,
                      "nodeType": "ExpressionStatement",
                      "src": "396:29:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2212,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2202,
                          "src": "442:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2213,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "454:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "454:9:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "442:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2200,
                      "id": 2216,
                      "nodeType": "Return",
                      "src": "435:28:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0046b777",
                "id": 2218,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfMostSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2197,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2196,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2218,
                      "src": "304:9:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2195,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "304:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "303:11:11"
                },
                "returnParameters": {
                  "id": 2200,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2199,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2218,
                      "src": "338:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2198,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "338:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "337:9:11"
                },
                "scope": 2256,
                "src": "264:206:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2230,
                  "nodeType": "Block",
                  "src": "548:54:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2227,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2220,
                            "src": "593:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2225,
                            "name": "BitMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "565:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                              "typeString": "type(library BitMath)"
                            }
                          },
                          "id": 2226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "leastSignificantBit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 622,
                          "src": "565:27:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) pure returns (uint8)"
                          }
                        },
                        "id": 2228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "565:30:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "functionReturnParameters": 2224,
                      "id": 2229,
                      "nodeType": "Return",
                      "src": "558:37:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d230d23f",
                "id": 2231,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "leastSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2221,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2220,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2231,
                      "src": "505:9:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2219,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "505:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "504:11:11"
                },
                "returnParameters": {
                  "id": 2224,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2223,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2231,
                      "src": "539:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2222,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "539:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "538:9:11"
                },
                "scope": 2256,
                "src": "476:126:11",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2254,
                  "nodeType": "Block",
                  "src": "692:124:11",
                  "statements": [
                    {
                      "assignments": [
                        2239
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2239,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2254,
                          "src": "702:17:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2238,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "702:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2242,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2240,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "722:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "722:9:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "702:29:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2246,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2233,
                            "src": "769:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2243,
                            "name": "BitMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "741:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_BitMath_$623_$",
                              "typeString": "type(library BitMath)"
                            }
                          },
                          "id": 2245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "leastSignificantBit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 622,
                          "src": "741:27:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) pure returns (uint8)"
                          }
                        },
                        "id": 2247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "741:30:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 2248,
                      "nodeType": "ExpressionStatement",
                      "src": "741:30:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2249,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2239,
                          "src": "788:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2250,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "800:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "800:9:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "788:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2237,
                      "id": 2253,
                      "nodeType": "Return",
                      "src": "781:28:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6b83cf26",
                "id": 2255,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfLeastSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2234,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2233,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2255,
                      "src": "649:9:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2232,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "649:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "648:11:11"
                },
                "returnParameters": {
                  "id": 2237,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2236,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2255,
                      "src": "683:7:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2235,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "683:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "682:9:11"
                },
                "scope": 2256,
                "src": "608:208:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2257,
            "src": "107:711:11"
          }
        ],
        "src": "45:774:11"
      }
    },
    "contracts/test/FixedPointTest.sol": {
      "id": 12,
      "AST": {
        "absolutePath": "contracts/test/FixedPointTest.sol",
        "exportedSymbols": {
          "FixedPointTest": [
            2524
          ]
        },
        "id": 2525,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2258,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:12"
          },
          {
            "id": 2259,
            "literals": [
              "experimental",
              "ABIEncoderV2"
            ],
            "nodeType": "PragmaDirective",
            "src": "71:33:12"
          },
          {
            "absolutePath": "contracts/libraries/FixedPoint.sol",
            "file": "../libraries/FixedPoint.sol",
            "id": 2260,
            "nodeType": "ImportDirective",
            "scope": 2525,
            "sourceUnit": 1253,
            "src": "106:37:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2524,
            "linearizedBaseContracts": [
              2524
            ],
            "name": "FixedPointTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2272,
                  "nodeType": "Block",
                  "src": "254:44:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2269,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2262,
                            "src": "289:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2267,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "271:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 663,
                          "src": "271:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (uint112) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "271:20:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 2266,
                      "id": 2271,
                      "nodeType": "Return",
                      "src": "264:27:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ca2d0299",
                "id": 2273,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2263,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2262,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2273,
                      "src": "191:9:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 2261,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "191:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "190:11:12"
                },
                "returnParameters": {
                  "id": 2266,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2265,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2273,
                      "src": "225:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2264,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "225:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "224:29:12"
                },
                "scope": 2524,
                "src": "175:123:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2285,
                  "nodeType": "Block",
                  "src": "386:47:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2282,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2275,
                            "src": "424:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint144",
                              "typeString": "uint144"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint144",
                              "typeString": "uint144"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2280,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "403:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "encode144",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 680,
                          "src": "403:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint144_$returns$_t_struct$_uq144x112_$634_memory_ptr_$",
                            "typeString": "function (uint144) pure returns (struct FixedPoint.uq144x112 memory)"
                          }
                        },
                        "id": 2283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "403:23:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 2279,
                      "id": 2284,
                      "nodeType": "Return",
                      "src": "396:30:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c814e314",
                "id": 2286,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2276,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2275,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2286,
                      "src": "323:9:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 2274,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "323:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "322:11:12"
                },
                "returnParameters": {
                  "id": 2279,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2278,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2286,
                      "src": "357:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2277,
                        "name": "FixedPoint.uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 634,
                        "src": "357:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "356:29:12"
                },
                "scope": 2524,
                "src": "304:129:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2298,
                  "nodeType": "Block",
                  "src": "523:47:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2295,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2288,
                            "src": "558:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2293,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "540:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "decode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 696,
                          "src": "540:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_uint112_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory) pure returns (uint112)"
                          }
                        },
                        "id": 2296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "540:23:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "functionReturnParameters": 2292,
                      "id": 2297,
                      "nodeType": "Return",
                      "src": "533:30:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4fd04a40",
                "id": 2299,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2289,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2288,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2299,
                      "src": "455:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2287,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "455:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "454:36:12"
                },
                "returnParameters": {
                  "id": 2292,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2291,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2299,
                      "src": "514:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 2290,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "514:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "513:9:12"
                },
                "scope": 2524,
                "src": "439:131:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2311,
                  "nodeType": "Block",
                  "src": "663:50:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2308,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2301,
                            "src": "701:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq144x112_$634_calldata_ptr",
                              "typeString": "struct FixedPoint.uq144x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq144x112_$634_calldata_ptr",
                              "typeString": "struct FixedPoint.uq144x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2306,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "680:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "decode144",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 712,
                          "src": "680:20:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq144x112_$634_memory_ptr_$returns$_t_uint144_$",
                            "typeString": "function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"
                          }
                        },
                        "id": 2309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "680:26:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "functionReturnParameters": 2305,
                      "id": 2310,
                      "nodeType": "Return",
                      "src": "673:33:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5f9f4c3b",
                "id": 2312,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2302,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2301,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2312,
                      "src": "595:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$634_calldata_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2300,
                        "name": "FixedPoint.uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 634,
                        "src": "595:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "594:36:12"
                },
                "returnParameters": {
                  "id": 2305,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2304,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2312,
                      "src": "654:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 2303,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "654:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "653:9:12"
                },
                "scope": 2524,
                "src": "576:137:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2327,
                  "nodeType": "Block",
                  "src": "831:47:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2323,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2314,
                            "src": "863:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2324,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2316,
                            "src": "869:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2321,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "848:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 750,
                          "src": "848:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$634_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"
                          }
                        },
                        "id": 2325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "848:23:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 2320,
                      "id": 2326,
                      "nodeType": "Return",
                      "src": "841:30:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "af35b769",
                "id": 2328,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2317,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2314,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2328,
                      "src": "732:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2313,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "732:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2316,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2328,
                      "src": "768:9:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2315,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "768:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "731:47:12"
                },
                "returnParameters": {
                  "id": 2320,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2319,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2328,
                      "src": "802:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$634_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2318,
                        "name": "FixedPoint.uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 634,
                        "src": "802:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$634_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "801:29:12"
                },
                "scope": 2524,
                "src": "719:159:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2343,
                  "nodeType": "Block",
                  "src": "975:48:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2339,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2330,
                            "src": "1008:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2340,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2332,
                            "src": "1014:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            },
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2337,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "992:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "muli",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 802,
                          "src": "992:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$_t_int256_$returns$_t_int256_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory,int256) pure returns (int256)"
                          }
                        },
                        "id": 2341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "992:24:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "functionReturnParameters": 2336,
                      "id": 2342,
                      "nodeType": "Return",
                      "src": "985:31:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "89258451",
                "id": 2344,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "muli",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2333,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2330,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2344,
                      "src": "898:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2329,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "898:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2332,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2344,
                      "src": "934:8:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 2331,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "934:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "897:46:12"
                },
                "returnParameters": {
                  "id": 2336,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2335,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2344,
                      "src": "967:6:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 2334,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "967:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "966:8:12"
                },
                "scope": 2524,
                "src": "884:139:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2359,
                  "nodeType": "Block",
                  "src": "1197:53:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2355,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2346,
                            "src": "1231:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2356,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2348,
                            "src": "1237:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            },
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2353,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "1214:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "muluq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 950,
                          "src": "1214:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1214:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 2352,
                      "id": 2358,
                      "nodeType": "Return",
                      "src": "1207:36:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5a606689",
                "id": 2360,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "muluq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2349,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2346,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2360,
                      "src": "1044:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2345,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1044:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2348,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2360,
                      "src": "1080:35:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2347,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1080:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1043:73:12"
                },
                "returnParameters": {
                  "id": 2352,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2351,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2360,
                      "src": "1164:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2350,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1164:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1163:29:12"
                },
                "scope": 2524,
                "src": "1029:221:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2386,
                  "nodeType": "Block",
                  "src": "1416:123:12",
                  "statements": [
                    {
                      "assignments": [
                        2370
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2370,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2386,
                          "src": "1426:17:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2369,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1426:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2373,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2371,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "1446:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1446:9:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1426:29:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2377,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2362,
                            "src": "1482:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2378,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2364,
                            "src": "1488:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            },
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2374,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "1465:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "muluq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 950,
                          "src": "1465:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1465:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "id": 2380,
                      "nodeType": "ExpressionStatement",
                      "src": "1465:29:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2381,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2370,
                          "src": "1511:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2382,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "1523:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1523:9:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1511:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2368,
                      "id": 2385,
                      "nodeType": "Return",
                      "src": "1504:28:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6d173f71",
                "id": 2387,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfMuluq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2365,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2362,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2387,
                      "src": "1283:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2361,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1283:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2364,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2387,
                      "src": "1319:35:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2363,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1319:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1282:73:12"
                },
                "returnParameters": {
                  "id": 2368,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2367,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2387,
                      "src": "1403:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2366,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1403:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1402:9:12"
                },
                "scope": 2524,
                "src": "1256:283:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2402,
                  "nodeType": "Block",
                  "src": "1713:53:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2398,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2389,
                            "src": "1747:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2399,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2391,
                            "src": "1753:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            },
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2396,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "1730:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "divuq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1053,
                          "src": "1730:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1730:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 2395,
                      "id": 2401,
                      "nodeType": "Return",
                      "src": "1723:36:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ca74fcc0",
                "id": 2403,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "divuq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2392,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2389,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2403,
                      "src": "1560:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2388,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1560:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2391,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2403,
                      "src": "1596:35:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2390,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1596:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1559:73:12"
                },
                "returnParameters": {
                  "id": 2395,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2394,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2403,
                      "src": "1680:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2393,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1680:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1679:29:12"
                },
                "scope": 2524,
                "src": "1545:221:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2429,
                  "nodeType": "Block",
                  "src": "1932:123:12",
                  "statements": [
                    {
                      "assignments": [
                        2413
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2413,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2429,
                          "src": "1942:17:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2412,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1942:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2416,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2414,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "1962:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1962:9:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1942:29:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2420,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2405,
                            "src": "1998:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2421,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2407,
                            "src": "2004:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            },
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2417,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "1981:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "divuq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1053,
                          "src": "1981:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory,struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1981:29:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "id": 2423,
                      "nodeType": "ExpressionStatement",
                      "src": "1981:29:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2424,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2413,
                          "src": "2027:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2425,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "2039:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2039:9:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2027:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2411,
                      "id": 2428,
                      "nodeType": "Return",
                      "src": "2020:28:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d993d379",
                "id": 2430,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfDivuq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2408,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2405,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2430,
                      "src": "1799:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2404,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1799:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2407,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2430,
                      "src": "1835:35:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2406,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "1835:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1798:73:12"
                },
                "returnParameters": {
                  "id": 2411,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2410,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2430,
                      "src": "1919:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2409,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1919:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1918:9:12"
                },
                "scope": 2524,
                "src": "1772:283:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2445,
                  "nodeType": "Block",
                  "src": "2171:67:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2441,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2432,
                            "src": "2208:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2442,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2434,
                            "src": "2219:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2439,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "2188:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "fraction",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1143,
                          "src": "2188:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (uint256,uint256) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2188:43:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 2438,
                      "id": 2444,
                      "nodeType": "Return",
                      "src": "2181:50:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0f1530e4",
                "id": 2446,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fraction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2435,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2432,
                      "mutability": "mutable",
                      "name": "numerator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2446,
                      "src": "2079:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2431,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2079:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2434,
                      "mutability": "mutable",
                      "name": "denominator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2446,
                      "src": "2098:19:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2433,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2098:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2078:40:12"
                },
                "returnParameters": {
                  "id": 2438,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2437,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2446,
                      "src": "2142:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2436,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2142:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2141:29:12"
                },
                "scope": 2524,
                "src": "2061:177:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2472,
                  "nodeType": "Block",
                  "src": "2346:137:12",
                  "statements": [
                    {
                      "assignments": [
                        2456
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2456,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2472,
                          "src": "2356:17:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2455,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2356:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2459,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2457,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "2376:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2376:9:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2356:29:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2463,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2448,
                            "src": "2415:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2464,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2450,
                            "src": "2426:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2460,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "2395:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "fraction",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1143,
                          "src": "2395:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (uint256,uint256) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2395:43:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "id": 2466,
                      "nodeType": "ExpressionStatement",
                      "src": "2395:43:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2467,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2456,
                          "src": "2455:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2468,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "2467:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2467:9:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2455:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2454,
                      "id": 2471,
                      "nodeType": "Return",
                      "src": "2448:28:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "644a478b",
                "id": 2473,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfFraction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2451,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2448,
                      "mutability": "mutable",
                      "name": "numerator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2473,
                      "src": "2274:17:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2447,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2274:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2450,
                      "mutability": "mutable",
                      "name": "denominator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2473,
                      "src": "2293:19:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2449,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2293:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2273:40:12"
                },
                "returnParameters": {
                  "id": 2454,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2453,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2473,
                      "src": "2337:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2452,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2337:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2336:9:12"
                },
                "scope": 2524,
                "src": "2244:239:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2485,
                  "nodeType": "Block",
                  "src": "2597:51:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2482,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2475,
                            "src": "2636:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2480,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "2614:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reciprocal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1177,
                          "src": "2614:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2614:27:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 2479,
                      "id": 2484,
                      "nodeType": "Return",
                      "src": "2607:34:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "31f92b13",
                "id": 2486,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "reciprocal",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2476,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2475,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2486,
                      "src": "2509:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2474,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2509:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2508:36:12"
                },
                "returnParameters": {
                  "id": 2479,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2478,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2486,
                      "src": "2568:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2477,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2568:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2567:29:12"
                },
                "scope": 2524,
                "src": "2489:159:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2498,
                  "nodeType": "Block",
                  "src": "2756:45:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2495,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2488,
                            "src": "2789:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2493,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "2773:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1251,
                          "src": "2773:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2773:21:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 2492,
                      "id": 2497,
                      "nodeType": "Return",
                      "src": "2766:28:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3f1626c8",
                "id": 2499,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2489,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2488,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2499,
                      "src": "2668:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2487,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2668:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2667:36:12"
                },
                "returnParameters": {
                  "id": 2492,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2491,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2499,
                      "src": "2727:27:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2490,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2727:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2726:29:12"
                },
                "scope": 2524,
                "src": "2654:147:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2522,
                  "nodeType": "Block",
                  "src": "2901:115:12",
                  "statements": [
                    {
                      "assignments": [
                        2507
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2507,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2522,
                          "src": "2911:17:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2506,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2911:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2510,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2508,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "2931:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2931:9:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2911:29:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2514,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2501,
                            "src": "2966:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                              "typeString": "struct FixedPoint.uq112x112 calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2511,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "2950:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1252_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 2513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1251,
                          "src": "2950:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$631_memory_ptr_$returns$_t_struct$_uq112x112_$631_memory_ptr_$",
                            "typeString": "function (struct FixedPoint.uq112x112 memory) pure returns (struct FixedPoint.uq112x112 memory)"
                          }
                        },
                        "id": 2515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2950:21:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "id": 2516,
                      "nodeType": "ExpressionStatement",
                      "src": "2950:21:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2517,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2507,
                          "src": "2988:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2518,
                            "name": "gasleft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -7,
                            "src": "3000:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3000:9:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2988:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2505,
                      "id": 2521,
                      "nodeType": "Return",
                      "src": "2981:28:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b1acad5c",
                "id": 2523,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfSqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2502,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2501,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2523,
                      "src": "2833:34:12",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$631_calldata_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2500,
                        "name": "FixedPoint.uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 631,
                        "src": "2833:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$631_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2832:36:12"
                },
                "returnParameters": {
                  "id": 2505,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2504,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2523,
                      "src": "2892:7:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2503,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2892:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2891:9:12"
                },
                "scope": 2524,
                "src": "2807:209:12",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2525,
            "src": "145:2873:12"
          }
        ],
        "src": "46:2973:12"
      }
    },
    "contracts/test/FullMathEchidnaTest.sol": {
      "id": 13,
      "AST": {
        "absolutePath": "contracts/test/FullMathEchidnaTest.sol",
        "exportedSymbols": {
          "FullMathEchidnaTest": [
            2565
          ]
        },
        "id": 2566,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2526,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:13"
          },
          {
            "absolutePath": "contracts/libraries/FullMath.sol",
            "file": "../libraries/FullMath.sol",
            "id": 2527,
            "nodeType": "ImportDirective",
            "scope": 2566,
            "sourceUnit": 1474,
            "src": "72:35:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2565,
            "linearizedBaseContracts": [
              2565
            ],
            "name": "FullMathEchidnaTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2563,
                  "nodeType": "Block",
                  "src": "194:212:13",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2534,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2529,
                            "src": "279:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "284:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "279:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2539,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2537,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2529,
                                        "src": "291:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2538,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2531,
                                        "src": "295:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "291:5:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 2540,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "290:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2541,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2529,
                                  "src": "300:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "290:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2543,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2531,
                                "src": "305:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "290:16:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 2545,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "289:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "279:28:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2562,
                      "nodeType": "IfStatement",
                      "src": "275:125:13",
                      "trueBody": {
                        "id": 2561,
                        "nodeType": "Block",
                        "src": "309:91:13",
                        "statements": [
                          {
                            "assignments": [
                              null,
                              2548
                            ],
                            "declarations": [
                              null,
                              {
                                "constant": false,
                                "id": 2548,
                                "mutability": "mutable",
                                "name": "h",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2561,
                                "src": "326:9:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2547,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "326:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2554,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2551,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2529,
                                  "src": "356:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2552,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2531,
                                  "src": "359:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2549,
                                  "name": "FullMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1473,
                                  "src": "339:8:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FullMath_$1473_$",
                                    "typeString": "type(library FullMath)"
                                  }
                                },
                                "id": 2550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "fullMul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1298,
                                "src": "339:16:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                                }
                              },
                              "id": 2553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "339:22:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "323:38:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2556,
                                    "name": "h",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2548,
                                    "src": "382:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2557,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "387:1:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "382:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 2555,
                                "name": "assert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -3,
                                "src": "375:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                  "typeString": "function (bool) pure"
                                }
                              },
                              "id": 2559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "375:14:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2560,
                            "nodeType": "ExpressionStatement",
                            "src": "375:14:13"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2a254e8e",
                "id": 2564,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "checkH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2532,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2529,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2564,
                      "src": "160:9:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2528,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "160:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2531,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2564,
                      "src": "171:9:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2530,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "171:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "159:22:13"
                },
                "returnParameters": {
                  "id": 2533,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "194:0:13"
                },
                "scope": 2565,
                "src": "144:262:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 2566,
            "src": "109:299:13"
          }
        ],
        "src": "46:363:13"
      }
    },
    "contracts/test/FullMathTest.sol": {
      "id": 14,
      "AST": {
        "absolutePath": "contracts/test/FullMathTest.sol",
        "exportedSymbols": {
          "FullMathTest": [
            2623
          ]
        },
        "id": 2624,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2567,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:14"
          },
          {
            "absolutePath": "contracts/libraries/FullMath.sol",
            "file": "../libraries/FullMath.sol",
            "id": 2568,
            "nodeType": "ImportDirective",
            "scope": 2624,
            "sourceUnit": 1474,
            "src": "72:35:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2623,
            "linearizedBaseContracts": [
              2623
            ],
            "name": "FullMathTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2586,
                  "nodeType": "Block",
                  "src": "248:48:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2581,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2570,
                            "src": "281:1:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2582,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2572,
                            "src": "284:1:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2583,
                            "name": "z",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2574,
                            "src": "287:1:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2579,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1473,
                            "src": "265:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$1473_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 2580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1472,
                          "src": "265:15:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2584,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "265:24:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2578,
                      "id": 2585,
                      "nodeType": "Return",
                      "src": "258:31:14"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "aa9a0912",
                "id": 2587,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mulDiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2570,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2587,
                      "src": "162:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2569,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "162:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2572,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2587,
                      "src": "181:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2571,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "181:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2574,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2587,
                      "src": "200:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2573,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "200:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "152:63:14"
                },
                "returnParameters": {
                  "id": 2578,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2577,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2587,
                      "src": "239:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2576,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "239:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "238:9:14"
                },
                "scope": 2623,
                "src": "137:159:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2621,
                  "nodeType": "Block",
                  "src": "423:112:14",
                  "statements": [
                    {
                      "assignments": [
                        2599
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2599,
                          "mutability": "mutable",
                          "name": "roundUp",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2621,
                          "src": "433:12:14",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 2598,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "433:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2607,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2606,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2601,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2589,
                              "src": "455:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2602,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2591,
                              "src": "458:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2603,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2593,
                              "src": "461:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2600,
                            "name": "mulmod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -16,
                            "src": "448:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "448:15:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "466:1:14",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "448:19:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "433:34:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2610,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2589,
                              "src": "500:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2611,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2591,
                              "src": "503:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2612,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2593,
                              "src": "506:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2608,
                              "name": "FullMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1473,
                              "src": "484:8:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FullMath_$1473_$",
                                "typeString": "type(library FullMath)"
                              }
                            },
                            "id": 2609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mulDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1472,
                            "src": "484:15:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "484:24:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 2614,
                                "name": "roundUp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2599,
                                "src": "512:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "526:1:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "id": 2617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "512:15:14",
                              "trueExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "522:1:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "id": 2618,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "511:17:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "484:44:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 2597,
                      "id": 2620,
                      "nodeType": "Return",
                      "src": "477:51:14"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0af8b27f",
                "id": 2622,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mulDivRoundingUp",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2594,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2589,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2622,
                      "src": "337:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2588,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "337:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2591,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2622,
                      "src": "356:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2590,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "356:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2593,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2622,
                      "src": "375:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2592,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "375:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "327:63:14"
                },
                "returnParameters": {
                  "id": 2597,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2596,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2622,
                      "src": "414:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2595,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "414:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "413:9:14"
                },
                "scope": 2623,
                "src": "302:233:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2624,
            "src": "109:428:14"
          }
        ],
        "src": "46:492:14"
      }
    },
    "contracts/test/SafeERC20NamerTest.sol": {
      "id": 15,
      "AST": {
        "absolutePath": "contracts/test/SafeERC20NamerTest.sol",
        "exportedSymbols": {
          "NamerTestFakeCompliantERC20": [
            2675
          ],
          "NamerTestFakeNoncompliantERC20": [
            2696
          ],
          "NamerTestFakeOptionalERC20": [
            2654
          ],
          "SafeERC20NamerTest": [
            2653
          ]
        },
        "id": 2697,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2625,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:15"
          },
          {
            "absolutePath": "contracts/libraries/SafeERC20Namer.sol",
            "file": "../libraries/SafeERC20Namer.sol",
            "id": 2626,
            "nodeType": "ImportDirective",
            "scope": 2697,
            "sourceUnit": 1789,
            "src": "72:41:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2653,
            "linearizedBaseContracts": [
              2653
            ],
            "name": "SafeERC20NamerTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2638,
                  "nodeType": "Block",
                  "src": "269:57:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2635,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2628,
                            "src": "313:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2633,
                            "name": "SafeERC20Namer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1788,
                            "src": "286:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_SafeERC20Namer_$1788_$",
                              "typeString": "type(library SafeERC20Namer)"
                            }
                          },
                          "id": 2634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokenSymbol",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1757,
                          "src": "286:26:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address) view returns (string memory)"
                          }
                        },
                        "id": 2636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "286:33:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 2632,
                      "id": 2637,
                      "nodeType": "Return",
                      "src": "279:40:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "033b9b4f",
                "id": 2639,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tokenSymbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2629,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2628,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2639,
                      "src": "216:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2627,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "216:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "215:15:15"
                },
                "returnParameters": {
                  "id": 2632,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2631,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2639,
                      "src": "254:13:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2630,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "254:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "253:15:15"
                },
                "scope": 2653,
                "src": "195:131:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2651,
                  "nodeType": "Block",
                  "src": "404:55:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2648,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2641,
                            "src": "446:5:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2646,
                            "name": "SafeERC20Namer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1788,
                            "src": "421:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_SafeERC20Namer_$1788_$",
                              "typeString": "type(library SafeERC20Namer)"
                            }
                          },
                          "id": 2647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokenName",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1787,
                          "src": "421:24:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (address) view returns (string memory)"
                          }
                        },
                        "id": 2649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "421:31:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 2645,
                      "id": 2650,
                      "nodeType": "Return",
                      "src": "414:38:15"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e54f7522",
                "id": 2652,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "tokenName",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2642,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2641,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2652,
                      "src": "351:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2640,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "351:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "350:15:15"
                },
                "returnParameters": {
                  "id": 2645,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2644,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2652,
                      "src": "389:13:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2643,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "388:15:15"
                },
                "scope": 2653,
                "src": "332:127:15",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2697,
            "src": "161:300:15"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2654,
            "linearizedBaseContracts": [
              2654
            ],
            "name": "NamerTestFakeOptionalERC20",
            "nodeType": "ContractDefinition",
            "nodes": [],
            "scope": 2697,
            "src": "500:40:15"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2675,
            "linearizedBaseContracts": [
              2675
            ],
            "name": "NamerTestFakeCompliantERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "06fdde03",
                "id": 2656,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2675,
                "src": "628:18:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2655,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "628:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "95d89b41",
                "id": 2658,
                "mutability": "mutable",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2675,
                "src": "652:20:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2657,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "652:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2673,
                  "nodeType": "Block",
                  "src": "742:55:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2665,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2656,
                          "src": "752:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2666,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2660,
                          "src": "759:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "752:12:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 2668,
                      "nodeType": "ExpressionStatement",
                      "src": "752:12:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2669,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2658,
                          "src": "774:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2670,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2662,
                          "src": "783:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "774:16:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 2672,
                      "nodeType": "ExpressionStatement",
                      "src": "774:16:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 2674,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2660,
                      "mutability": "mutable",
                      "name": "name_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2674,
                      "src": "691:19:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2659,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "691:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2662,
                      "mutability": "mutable",
                      "name": "symbol_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2674,
                      "src": "712:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 2661,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "712:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "690:44:15"
                },
                "returnParameters": {
                  "id": 2664,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "742:0:15"
                },
                "scope": 2675,
                "src": "679:118:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 2697,
            "src": "585:214:15"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2696,
            "linearizedBaseContracts": [
              2696
            ],
            "name": "NamerTestFakeNoncompliantERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "06fdde03",
                "id": 2677,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2696,
                "src": "897:19:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2676,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "897:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "95d89b41",
                "id": 2679,
                "mutability": "mutable",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2696,
                "src": "922:21:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2678,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "922:7:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2694,
                  "nodeType": "Block",
                  "src": "1001:55:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2686,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2677,
                          "src": "1011:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2687,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2681,
                          "src": "1018:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1011:12:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 2689,
                      "nodeType": "ExpressionStatement",
                      "src": "1011:12:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2690,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2679,
                          "src": "1033:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2691,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2683,
                          "src": "1042:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1033:16:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 2693,
                      "nodeType": "ExpressionStatement",
                      "src": "1033:16:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 2695,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2684,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2681,
                      "mutability": "mutable",
                      "name": "name_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2695,
                      "src": "962:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2680,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "962:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2683,
                      "mutability": "mutable",
                      "name": "symbol_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2695,
                      "src": "977:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2682,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "977:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "961:32:15"
                },
                "returnParameters": {
                  "id": 2685,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1001:0:15"
                },
                "scope": 2696,
                "src": "950:106:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 2697,
            "src": "851:207:15"
          }
        ],
        "src": "46:1013:15"
      }
    },
    "contracts/test/TransferHelperTest.sol": {
      "id": 16,
      "AST": {
        "absolutePath": "contracts/test/TransferHelperTest.sol",
        "exportedSymbols": {
          "TransferHelperTest": [
            2772
          ],
          "TransferHelperTestFakeERC20Compliant": [
            2849
          ],
          "TransferHelperTestFakeERC20Noncompliant": [
            2903
          ],
          "TransferHelperTestFakeFallback": [
            2941
          ]
        },
        "id": 2942,
        "license": "GPL-3.0-or-later",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2698,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:16"
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "../libraries/TransferHelper.sol",
            "id": 2699,
            "nodeType": "ImportDirective",
            "scope": 2942,
            "sourceUnit": 1949,
            "src": "72:41:16",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2772,
            "linearizedBaseContracts": [
              2772
            ],
            "name": "TransferHelperTest",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 2716,
                  "nodeType": "Block",
                  "src": "280:61:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2711,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2701,
                            "src": "317:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2712,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "324:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2713,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2705,
                            "src": "328:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2708,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1948,
                            "src": "290:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1948_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeApprove",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1833,
                          "src": "290:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "290:44:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2715,
                      "nodeType": "ExpressionStatement",
                      "src": "290:44:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "eb5625d9",
                "id": 2717,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeApprove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2706,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2701,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2717,
                      "src": "208:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2700,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "208:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2703,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2717,
                      "src": "231:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2702,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "231:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2705,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2717,
                      "src": "251:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2704,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "251:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "198:72:16"
                },
                "returnParameters": {
                  "id": 2707,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "280:0:16"
                },
                "scope": 2772,
                "src": "178:163:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2734,
                  "nodeType": "Block",
                  "src": "450:62:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2729,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2719,
                            "src": "488:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2730,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2721,
                            "src": "495:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2731,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2723,
                            "src": "499:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2726,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1948,
                            "src": "460:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1948_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1876,
                          "src": "460:27:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "460:45:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2733,
                      "nodeType": "ExpressionStatement",
                      "src": "460:45:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d1660f99",
                "id": 2735,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2724,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2719,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2735,
                      "src": "378:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2718,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "378:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2721,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2735,
                      "src": "401:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2720,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "401:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2723,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2735,
                      "src": "421:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2722,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "421:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "368:72:16"
                },
                "returnParameters": {
                  "id": 2725,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "450:0:16"
                },
                "scope": 2772,
                "src": "347:165:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2755,
                  "nodeType": "Block",
                  "src": "647:72:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2749,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2737,
                            "src": "689:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2750,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2739,
                            "src": "696:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2751,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2741,
                            "src": "702:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2752,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2743,
                            "src": "706:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2746,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1948,
                            "src": "657:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1948_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1922,
                          "src": "657:31:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "657:55:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2754,
                      "nodeType": "ExpressionStatement",
                      "src": "657:55:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d9fc4b61",
                "id": 2756,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2744,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2737,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2756,
                      "src": "553:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2736,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "553:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2739,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2756,
                      "src": "576:12:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2738,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "576:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2741,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2756,
                      "src": "598:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2740,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "598:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2743,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2756,
                      "src": "618:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2742,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "618:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "543:94:16"
                },
                "returnParameters": {
                  "id": 2745,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "647:0:16"
                },
                "scope": 2772,
                "src": "518:201:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2770,
                  "nodeType": "Block",
                  "src": "786:58:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2766,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2758,
                            "src": "827:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2767,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2760,
                            "src": "831:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2763,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1948,
                            "src": "796:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1948_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1947,
                          "src": "796:30:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 2768,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "796:41:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2769,
                      "nodeType": "ExpressionStatement",
                      "src": "796:41:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "7c4368c1",
                "id": 2771,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2761,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2758,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2771,
                      "src": "750:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2757,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "750:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2760,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2771,
                      "src": "762:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2759,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "762:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "749:27:16"
                },
                "returnParameters": {
                  "id": 2762,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "786:0:16"
                },
                "scope": 2772,
                "src": "725:119:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2942,
            "src": "144:702:16"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2849,
            "linearizedBaseContracts": [
              2849
            ],
            "name": "TransferHelperTestFakeERC20Compliant",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "0b93381b",
                "id": 2774,
                "mutability": "mutable",
                "name": "success",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2849,
                "src": "956:19:16",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2773,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "956:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "d3072d82",
                "id": 2776,
                "mutability": "mutable",
                "name": "shouldRevert",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2849,
                "src": "981:24:16",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2775,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "981:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2791,
                  "nodeType": "Block",
                  "src": "1071:73:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2783,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2774,
                          "src": "1081:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2784,
                          "name": "success_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2778,
                          "src": "1091:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1081:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2786,
                      "nodeType": "ExpressionStatement",
                      "src": "1081:18:16"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2787,
                          "name": "shouldRevert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "1109:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2788,
                          "name": "shouldRevert_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2780,
                          "src": "1124:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1109:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2790,
                      "nodeType": "ExpressionStatement",
                      "src": "1109:28:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "15d98b40",
                "id": 2792,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setup",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2781,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2778,
                      "mutability": "mutable",
                      "name": "success_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2792,
                      "src": "1027:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2777,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1027:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2780,
                      "mutability": "mutable",
                      "name": "shouldRevert_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2792,
                      "src": "1042:18:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2779,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1042:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1026:35:16"
                },
                "returnParameters": {
                  "id": 2782,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1071:0:16"
                },
                "scope": 2849,
                "src": "1012:132:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2809,
                  "nodeType": "Block",
                  "src": "1215:73:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "1233:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2802,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2776,
                              "src": "1234:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "524556455254",
                            "id": 2804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1248:8:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f",
                              "typeString": "literal_string \"REVERT\""
                            },
                            "value": "REVERT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f",
                              "typeString": "literal_string \"REVERT\""
                            }
                          ],
                          "id": 2801,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1225:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1225:32:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2806,
                      "nodeType": "ExpressionStatement",
                      "src": "1225:32:16"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2807,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2774,
                        "src": "1274:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 2800,
                      "id": 2808,
                      "nodeType": "Return",
                      "src": "1267:14:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 2810,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2797,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2794,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2810,
                      "src": "1168:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2793,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1168:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2796,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2810,
                      "src": "1177:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2795,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1177:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1167:18:16"
                },
                "returnParameters": {
                  "id": 2800,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2799,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2810,
                      "src": "1209:4:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2798,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1209:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1208:6:16"
                },
                "scope": 2849,
                "src": "1150:138:16",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2829,
                  "nodeType": "Block",
                  "src": "1402:73:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "1420:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2822,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2776,
                              "src": "1421:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "524556455254",
                            "id": 2824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1435:8:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f",
                              "typeString": "literal_string \"REVERT\""
                            },
                            "value": "REVERT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f",
                              "typeString": "literal_string \"REVERT\""
                            }
                          ],
                          "id": 2821,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1412:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1412:32:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2826,
                      "nodeType": "ExpressionStatement",
                      "src": "1412:32:16"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2827,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2774,
                        "src": "1461:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 2820,
                      "id": 2828,
                      "nodeType": "Return",
                      "src": "1454:14:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 2830,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2817,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2812,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2830,
                      "src": "1325:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2811,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1325:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2814,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2830,
                      "src": "1342:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2813,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1342:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2816,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2830,
                      "src": "1359:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2815,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1359:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1315:57:16"
                },
                "returnParameters": {
                  "id": 2820,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2819,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2830,
                      "src": "1396:4:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2818,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1396:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1395:6:16"
                },
                "scope": 2849,
                "src": "1294:181:16",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2847,
                  "nodeType": "Block",
                  "src": "1545:73:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "1563:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2840,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2776,
                              "src": "1564:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "524556455254",
                            "id": 2842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1578:8:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f",
                              "typeString": "literal_string \"REVERT\""
                            },
                            "value": "REVERT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e13872d662304a4be4efe6d4425b00781f90609ddf2ef6e5b5e5c8bc7f5ed47f",
                              "typeString": "literal_string \"REVERT\""
                            }
                          ],
                          "id": 2839,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1555:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1555:32:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2844,
                      "nodeType": "ExpressionStatement",
                      "src": "1555:32:16"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2774,
                        "src": "1604:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 2838,
                      "id": 2846,
                      "nodeType": "Return",
                      "src": "1597:14:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 2848,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2835,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2832,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2848,
                      "src": "1498:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2831,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1498:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2834,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2848,
                      "src": "1507:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2833,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1507:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1497:18:16"
                },
                "returnParameters": {
                  "id": 2838,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2837,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2848,
                      "src": "1539:4:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2836,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1539:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1538:6:16"
                },
                "scope": 2849,
                "src": "1481:137:16",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2942,
            "src": "904:716:16"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2903,
            "linearizedBaseContracts": [
              2903
            ],
            "name": "TransferHelperTestFakeERC20Noncompliant",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "d3072d82",
                "id": 2851,
                "mutability": "mutable",
                "name": "shouldRevert",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2903,
                "src": "1721:24:16",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2850,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1721:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2860,
                  "nodeType": "Block",
                  "src": "1796:45:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2856,
                          "name": "shouldRevert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2851,
                          "src": "1806:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2857,
                          "name": "shouldRevert_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2853,
                          "src": "1821:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1806:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2859,
                      "nodeType": "ExpressionStatement",
                      "src": "1806:28:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e2c169ec",
                "id": 2861,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setup",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2854,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2853,
                      "mutability": "mutable",
                      "name": "shouldRevert_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2861,
                      "src": "1767:18:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2852,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1767:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1766:20:16"
                },
                "returnParameters": {
                  "id": 2855,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1796:0:16"
                },
                "scope": 2903,
                "src": "1752:89:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2873,
                  "nodeType": "Block",
                  "src": "1897:39:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "1915:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2869,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "1916:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2868,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1907:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1907:22:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2872,
                      "nodeType": "ExpressionStatement",
                      "src": "1907:22:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 2874,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2866,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2863,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2874,
                      "src": "1865:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2862,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1865:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2865,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2874,
                      "src": "1874:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2864,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1874:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1864:18:16"
                },
                "returnParameters": {
                  "id": 2867,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1897:0:16"
                },
                "scope": 2903,
                "src": "1847:89:16",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2888,
                  "nodeType": "Block",
                  "src": "2035:39:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2885,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "2053:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2884,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "2054:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2883,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2045:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2045:22:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2887,
                      "nodeType": "ExpressionStatement",
                      "src": "2045:22:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 2889,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2881,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2876,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2889,
                      "src": "1973:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2875,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1973:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2878,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2889,
                      "src": "1990:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2877,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1990:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2880,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2889,
                      "src": "2007:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2879,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2007:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1963:57:16"
                },
                "returnParameters": {
                  "id": 2882,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2035:0:16"
                },
                "scope": 2903,
                "src": "1942:132:16",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2901,
                  "nodeType": "Block",
                  "src": "2129:39:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "2147:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2897,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "2148:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2896,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2139:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2139:22:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2900,
                      "nodeType": "ExpressionStatement",
                      "src": "2139:22:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 2902,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2894,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2891,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2902,
                      "src": "2097:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2890,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2097:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2893,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2902,
                      "src": "2106:7:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2892,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2106:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2096:18:16"
                },
                "returnParameters": {
                  "id": 2895,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2129:0:16"
                },
                "scope": 2903,
                "src": "2080:88:16",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2942,
            "src": "1666:504:16"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2941,
            "linearizedBaseContracts": [
              2941
            ],
            "name": "TransferHelperTestFakeFallback",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "d3072d82",
                "id": 2905,
                "mutability": "mutable",
                "name": "shouldRevert",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2941,
                "src": "2218:24:16",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2904,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2218:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2914,
                  "nodeType": "Block",
                  "src": "2293:45:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2910,
                          "name": "shouldRevert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "2303:12:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2911,
                          "name": "shouldRevert_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2907,
                          "src": "2318:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2303:28:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2913,
                      "nodeType": "ExpressionStatement",
                      "src": "2303:28:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e2c169ec",
                "id": 2915,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setup",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2908,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2907,
                      "mutability": "mutable",
                      "name": "shouldRevert_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2915,
                      "src": "2264:18:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2906,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2264:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2263:20:16"
                },
                "returnParameters": {
                  "id": 2909,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2293:0:16"
                },
                "scope": 2941,
                "src": "2249:89:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2923,
                  "nodeType": "Block",
                  "src": "2371:39:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "2389:13:16",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2919,
                              "name": "shouldRevert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "2390:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2918,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2381:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2381:22:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2922,
                      "nodeType": "ExpressionStatement",
                      "src": "2381:22:16"
                    }
                  ]
                },
                "documentation": null,
                "id": 2924,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2916,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2351:2:16"
                },
                "returnParameters": {
                  "id": 2917,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2371:0:16"
                },
                "scope": 2941,
                "src": "2344:66:16",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2939,
                  "nodeType": "Block",
                  "src": "2445:59:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2934,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2483:4:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TransferHelperTestFakeFallback_$2941",
                                    "typeString": "contract TransferHelperTestFakeFallback"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_TransferHelperTestFakeFallback_$2941",
                                    "typeString": "contract TransferHelperTestFakeFallback"
                                  }
                                ],
                                "id": 2933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2475:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2932,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2475:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2475:13:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 2936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2475:21:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2927,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2455:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2455:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "id": 2931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2455:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 2937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2455:42:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2938,
                      "nodeType": "ExpressionStatement",
                      "src": "2455:42:16"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3ccfd60b",
                "id": 2940,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2925,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2433:2:16"
                },
                "returnParameters": {
                  "id": 2926,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2445:0:16"
                },
                "scope": 2941,
                "src": "2416:88:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2942,
            "src": "2172:334:16"
          }
        ],
        "src": "46:2461:16"
      }
    }
  },
  "sourceList": [
    "contracts/libraries/AddressStringUtil.sol",
    "contracts/libraries/Babylonian.sol",
    "contracts/libraries/BitMath.sol",
    "contracts/libraries/FixedPoint.sol",
    "contracts/libraries/FullMath.sol",
    "contracts/libraries/SafeERC20Namer.sol",
    "contracts/libraries/TransferHelper.sol",
    "contracts/test/AddressStringUtilTest.sol",
    "contracts/test/BabylonianEchidnaTest.sol",
    "contracts/test/BabylonianTest.sol",
    "contracts/test/BitMathEchidnaTest.sol",
    "contracts/test/BitMathTest.sol",
    "contracts/test/FixedPointTest.sol",
    "contracts/test/FullMathEchidnaTest.sol",
    "contracts/test/FullMathTest.sol",
    "contracts/test/SafeERC20NamerTest.sol",
    "contracts/test/TransferHelperTest.sol"
  ]
}